This article brings you relevant knowledge about Redis, which mainly introduces issues related to consistent hashing and hash slots. If expansion occurs or nodes are lost, you will encounter a large number of problems. Data migration issues, consistent hashing and hash slots can avoid this problem. I hope it will be helpful to everyone.
Recommended learning: Redis learning tutorial
If we now have x cache devices, we are deciding which one to put the data in When caching on the device, you can key%x, but if expansion occurs or the node is lost, you need key%(x±y). This will encounter a lot of data migration problems. Consistent hashing and hash slots can avoid this problem. .
Principle of consistent hash
Ordinary hash is the remainder of the number of servers, consistent hash is the remainder of a specific number (2^32), which will not change due to the number of servers. First, we take the remainder of the server's IP or other unique identifier to get a value. This value is the server's position on the hash ring. Then we hash the object to be placed in the server to get a value. We replace the hash with the corresponding server and find the value. If there is no server in the location, check whether the server in the next location knows to find a server that can be stored.
1. Ring space
According to the commonly used hash algorithm, hash the corresponding key into a space with 2 to the power of 32 nodes, that is, 0 ~ (2 of 32)-1 in the digital space. We can imagine this thing as biting its tail, forming a closed loop.
2. Hash the server to the ring
Now that the ring is in place, we need to put the server on the ring. We can do this according to the IP address of the server. Get the number and other unique identifiers, hash them and put them on the ring.
3. Data storage and acquisition
When we need to put a piece of data on the server, we first need to calculate the hash value of the data. Then take the remainder. If the remainder value has a corresponding server on the ring, put it directly. If not, search backwards.
So finally data1 is in redis1 and data2 is in redis2. When we obtain data, we also perform the same process, calculate the hash value of the key, and then obtain the stored server according to the same rules.
4. Deletion and addition of servers
If a redis node hangs up now, then the data in other nodes is still there, and the data in the original node is still there. The data will be redistributed to the next node.
If a new server RedisNeo is added to the environment, RedisNeo is mapped to the ring through the hash algorithm, and according to the clockwise migration rule, the data with the previous hash value between Redis2 and RedisNeo will be migrated to RedisNeo (below) In the figure, RedisNeo is next to Redis2), and other objects still maintain their original storage locations. Through the analysis of the addition and deletion of nodes, the consistent hashing algorithm maintains monotonicity while minimizing data migration. Such an algorithm is very suitable for distributed clusters and avoids a large amount of data migration. , reducing the pressure on the server.
So after redisNeo is added, data3 goes into redisNeo.
5. Balance
So far, consistent hashing can be considered completed, but there is one problem that still needs to be solved, and that is balance. From the figure below, we can see that when there are relatively few server nodes, a problem will arise, that is, a large amount of data will inevitably be concentrated on one node. For example, if you only have two nodes, one at 1 and the other at 10, then it will be very difficult. Obviously the pressure on node 1 is infinite, because only those with hash values between [2,10] will go to node 10, and the others will all go to node 1. In order to solve this data skew problem, consistent hashing The algorithm introduces a virtual node mechanism, that is, multiple hashes are calculated for each service node, and one service node is placed at each calculation result position, which is called a virtual node. The specific method can be to first determine the number of virtual nodes associated with each physical node, and then add the number after the IP or host name. At the same time, the data positioning algorithm remains unchanged, except for the mapping of virtual nodes to actual nodes.
hash slot
The hash slot is used in the redis cluster cluster scheme. The redis cluster cluster does not use a consistent hash scheme, but uses hashing in data sharding. Slots are used for data storage and reading. Redis cluster uses hash slots of data shards for data storage and data reading. The redis cluster has a total of 2^14 (16384) slots. All master nodes will have a slot area such as 0~1000. The number of slots can be migrated. The slave node of the master node does not assign slots and only has read permissions. But note that in the code, the redis cluster performs read and write operations on the master node. It is not the slave node for reading and the master node for writing. When a redis cluster is created for the first time, 16384 slots are evenly distributed by the master node.
Compared with consistent hashing, you need to manually allocate hash slots when expanding and shrinking, and when deleting the master node, you must give its slave nodes and hash slots to other masters. Node; the hash slot is based on the value of CRC-16 (key) 384 to determine which slot it belongs to.
Recommended learning: Redis tutorial
The above is the detailed content of Redis cache learning consistent hash and hash slot. For more information, please follow other related articles on the PHP Chinese website!

RedisofferssuperiorspeedfordataoperationsbutrequiressignificantRAMandinvolvestrade-offsindatapersistenceandscalability.1)Itsin-memorynatureprovidesultra-fastread/writeoperations,idealforreal-timeapplications.2)However,largedatasetsmaynecessitatedatae

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.


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

Safe Exam Browser
Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

SublimeText3 English version
Recommended: Win version, supports code prompts!

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

mPDF
mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

Dreamweaver CS6
Visual web development tools
