1. An SF Express senior development engineer executed a dangerous Redis command online, causing a company to lose 4 million.
One command resulted in a loss of millions. Does this require compensation?
The code is not standardized and my colleagues burst into tears. Please be careful when coding!
Out of curiosity, let me test it out. What is the problem?
2. Test the performance of 10 million data
1. Write a script file
Write 10 million data.
for((i=1;i<=10000000;i++)); do echo "set k$i 哪吒编程$i" >> /tmp/test1.txt;done;
Check whether the writing is successful through /tmp/test1.txt
.
2. Write 10 million data to Redis
cat /tmp/test1.txt | redis-cli -a 111111 --pipe
3. View 10 million data through keys *
4. Prohibit the use of keys * through the configuration file
Configure security in the redis.conf file:
rename- command keys "" rename- command flushdb "" rename- command flushall ""
3. Use scan instead of keys *
The Redis Scan command is used to iterate over database keys in the database.
The SCAN command is a cursor-based iterator. Each time it is called, a new cursor will be returned to the user. The user needs to use this new cursor as the cursor parameter of the SCAN command in the next iteration. In this way to continue the previous iterative process.
SCAN returns an array containing two elements. The first element is the new cursor for the next iteration, and the second element is an array containing all the iterated items. element. If the new cursor returns 0 it indicates that the iteration has ended.
scan syntax:
SCAN cursor [MATCH pattern] [COUNT count]
4. Reject bigkey
1. Alibaba Cloud Redis development specifications
Alibaba Cloud The Redis development specifications clearly stipulate"Reject bigkey (prevent network card traffic and slow queries)"
.
String type is controlled within 10KB, and the number of hash, list, set, and zset elements should not exceed 5000.
2. How to delete bigkey when it appears?
String type is deleted with del.
Other types use hscan, sscan, and zscan methods to progressively delete. At the same time, the problem of automatic deletion of bigkey expiration time must be avoided, because it will cause the main thread to block.
Hash Delete: hscan hdel
public void delBigHash(String host, int port, String password, String bigHashKey) { Jedis jedis = new Jedis(host, port); if (password != null && !"".equals(password)) { jedis.auth(password); } ScanParams scanParams = new ScanParams().count(100); String cursor = "0"; do { ScanResult<Entry<String, String>> scanResult = jedis.hscan(bigHashKey, cursor, scanParams); List<Entry<String, String>> entryList = scanResult.getResult(); if (entryList != null && !entryList.isEmpty()) { for (Entry<String, String> entry : entryList) { jedis.hdel(bigHashKey, entry.getKey()); } } cursor = scanResult.getStringCursor(); } while (!"0".equals(cursor)); //删除 bigkey jedis.del(bigHashKey); }
3. What problems will bigkey cause?
Memory is uneven, cluster migration is difficult;
Timeout deletion, blocking threads;
Network traffic is blocked;
4. How to find bigkey?
(1) Search through redis-cli --bigkeys
.
(2) Calculate the number of bytes of each key value and search through the memory usage key
The above is the detailed content of How to solve the problem that Redis bigkeys command will block. For more information, please follow other related articles on the PHP Chinese website!

Redisoutperformstraditionaldatabasesinspeedforread/writeoperationsduetoitsin-memorynature,whiletraditionaldatabasesexcelincomplexqueriesanddataintegrity.1)Redisisidealforreal-timeanalyticsandcaching,offeringphenomenalperformance.2)Traditionaldatabase

UseRedisinsteadofatraditionaldatabasewhenyourapplicationrequiresspeedandreal-timedataprocessing,suchasforcaching,sessionmanagement,orreal-timeanalytics.Redisexcelsin:1)Caching,reducingloadonprimarydatabases;2)Sessionmanagement,simplifyingdatahandling

Redis goes beyond SQL databases because of its high performance and flexibility. 1) Redis achieves extremely fast read and write speed through memory storage. 2) It supports a variety of data structures, such as lists and collections, suitable for complex data processing. 3) Single-threaded model simplifies development, but high concurrency may become a bottleneck.

Redis is superior to traditional databases in high concurrency and low latency scenarios, but is not suitable for complex queries and transaction processing. 1.Redis uses memory storage, fast read and write speed, suitable for high concurrency and low latency requirements. 2. Traditional databases are based on disk, support complex queries and transaction processing, and have strong data consistency and persistence. 3. Redis is suitable as a supplement or substitute for traditional databases, but it needs to be selected according to specific business needs.

Redisisahigh-performancein-memorydatastructurestorethatexcelsinspeedandversatility.1)Itsupportsvariousdatastructureslikestrings,lists,andsets.2)Redisisanin-memorydatabasewithpersistenceoptions,ensuringfastperformanceanddatasafety.3)Itoffersatomicoper

Redis is primarily a database, but it is more than just a database. 1. As a database, Redis supports persistence and is suitable for high-performance needs. 2. As a cache, Redis improves application response speed. 3. As a message broker, Redis supports publish-subscribe mode, suitable for real-time communication.

Redisisamultifacetedtoolthatservesasadatabase,server,andmore.Itfunctionsasanin-memorydatastructurestore,supportsvariousdatastructures,andcanbeusedasacache,messagebroker,sessionstorage,andfordistributedlocking.

Redisisanopen-source,in-memorydatastructurestoreusedasadatabase,cache,andmessagebroker,excellinginspeedandversatility.Itiswidelyusedforcaching,real-timeanalytics,sessionmanagement,andleaderboardsduetoitssupportforvariousdatastructuresandfastdataacces


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft

Notepad++7.3.1
Easy-to-use and free code editor

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.

SublimeText3 Mac version
God-level code editing software (SublimeText3)

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment
