Redis Sharding Cluster
Redis Sharding is a client-side Sharding sharding technology.
Redis Sharding can be said to be a multi-Redis instance cluster method commonly used in the industry before Redis Cluster came out. The main idea is to use a hash algorithm to hash the key of Redis data. Through the hash function, a specific key will be mapped to a specific Redis node. (Recommended learning: Redis video tutorial)
In this way, the client knows which Redis node to operate data on. It should be noted that this is on the client side. Completed.
java redis client jedis already supports Redis Sharding function, namely ShardedJedis and ShardedJedisPool combined with cache pool. Jedis's Redis Sharding implementation has the following characteristics:
1. Use consistent hashing algorithm (consistent hashing)
Hash the key and node name at the same time, and then Mapping matching, the algorithm used is MURMUR_HASH. The main reason for consistent hashing is that when adding or subtracting nodes, there will be no rehashing caused by rematching. Consistent hashing only affects the key allocation of adjacent nodes, and the impact is small. For more introduction to consistent hashing algorithms, please refer to: http://blog.csdn.net/cywosp/article/details/23397179/
2. Virtual node
ShardedJedis will virtualize each Redis node into 160 virtual nodes based on its name for hashing. By using virtual nodes for mapping and matching, when adding or reducing Redis nodes, keys can be moved more evenly among Redis nodes, instead of only adjacent nodes being affected. As shown in the figure, Redis node 1 is virtualized into NODE1-1 and NODE1-2, which are in the hash ring. In this way, when object1 and object2 are hashed, the nearest nodes NODE1-1 and NODE1-2 are selected, and NODE1-1 and NODE1-2 are virtual nodes of the NODE node, that is, they are actually stored on the NODE node.
Adding virtual nodes can ensure balance, that is, each Redis machine stores similar data, instead of one machine storing more data and others less.
3. ShardedJedis supports keyTagPattern mode
Extract part of the keyTag for sharding, so that by naming the key reasonably, a group of related keys can be put into the same Redis nodes to avoid cross-node access. That is, the client specifies and stores the key values of the same rules on the same Redis node.
When adding or reducing nodes?
Redis Sharding adopts the client Sharding method, and the Redis on the server is still a relatively independent Redis instance node. At the same time, we do not need to add additional intermediate processing components. This is a very lightweight and flexible Redis multi-instance cluster solution.
Of course, this lightweight and flexible approach must compromise other capabilities of the cluster. For example, when scaling up, when you want to add Redis nodes, even if consistent hashing is used, different keys will be distributed to different Redis nodes.
When we need to expand, add machines to the shard list. At this time, the client calculates based on the key and lands on a different machine than the original one. In this way, if a certain value is to be obtained, it may not be obtained.
For this situation, the general approach is to reload the data directly from the back-end database after it cannot be retrieved. However, sometimes, breaking through the cache layer and directly accessing the database layer will cause great harm to system access. huge pressure.
The author of Redis gave a way - presharding.
is an online expansion method. The principle is to run multiple Redis instances with different ports on each physical machine. For example, if there are three physical machines, each physical machine will run three Redis instances. , then there are actually 9 Redis instances in our sharding list. When we need to expand, add a physical machine. The steps are as follows:
1. Run Redis-server
on the new physical machine.2. The Redis-server belongs to (slaveof) a Redis-Server in the shard list (assumed to be called RedisA).
3. After the master-slave replication (Replication) is completed, change the IP and port of RedisA in the client shard list to the IP and port of Redis-Server on the new physical machine.
4. Stop RedisA
This is equivalent to transferring a certain Redis-Server to a new machine. However, it still relies heavily on the replication function of Redis itself. If the main database snapshot data file is too large, the replication process will take a long time and will also put pressure on the main Redis. Therefore, it is best to choose a low-business access method for this split process. Conducted during peak hours.
When a node fails
It is not only the addition or deletion of Redis nodes that causes key value loss. The bigger obstacle comes from the sudden downtime of the Redis node.
In order not to affect the performance of Redis, try not to enable the AOF and RDB file saving functions. Therefore, it is necessary to construct a Redis active and standby mode. If the active Redis is down, the standby Redis will have a backup, and the data will not be lost.
Sharding evolved as follows:
In this way, our architectural model becomes a Redis node slice containing a primary Redis and a standby Redis. The active and standby together form a Redis node, through automatic failover , ensuring the high availability of the node.
Redis Sentinel
Provides functions such as Redis monitoring and failover in active and backup modes to achieve high system availability.
Read and write separation
Under high access time, even if Sharding is used, a single node still bears a lot of access pressure. At this time, we need to further decompose it.
Normally, reading is often several times faster than writing. At this time, we can separate reading and writing, and reading provides more instances. The master-slave mode is used to realize the separation of reading and writing. The master is responsible for writing and the slave is responsible for reading only. At the same time, one master can connect multiple slaves. Under Redis Sentinel monitoring, automatic monitoring of node failures can also be ensured.
For more Redis-related technical articles, please visit the Introduction to Using Redis Database Tutorial column to learn!
The above is the detailed content of How to cluster redis. For more information, please follow other related articles on the PHP Chinese website!

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

Redis is an open source memory data structure storage used as a database, cache and message broker, suitable for scenarios where fast response and high concurrency are required. 1.Redis uses memory to store data and provides microsecond read and write speed. 2. It supports a variety of data structures, such as strings, lists, collections, etc. 3. Redis realizes data persistence through RDB and AOF mechanisms. 4. Use single-threaded model and multiplexing technology to handle requests efficiently. 5. Performance optimization strategies include LRU algorithm and cluster mode.

Redis's functions mainly include cache, session management and other functions: 1) The cache function stores data through memory to improve reading speed, and is suitable for high-frequency access scenarios such as e-commerce websites; 2) The session management function shares session data in a distributed system and automatically cleans it through an expiration time mechanism; 3) Other functions such as publish-subscribe mode, distributed locks and counters, suitable for real-time message push and multi-threaded systems and other scenarios.


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

SublimeText3 Chinese version
Chinese version, very easy to use

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),

SecLists
SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

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.

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