标签:policy article 系统 slot 结构 keep 乐观锁 节点 隔离
Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。
redis的性能极高(Redis能读的速度是110000次/s,写的速度是81000次/s)
支持的数据类型丰富(Strings, Lists, Hashes, Sets ,Ordered Sets, HyperLogLog)
同时可以作成消息队列(支持发布/订阅)
而且操作均为原子性(甚至合并操作的原子性)
主要的应用场景:
缓存(热数据)、计数器、队列(用作简单使用)、位操作、分布式锁与单线程机制、最新列表、排行榜等
Redis的7个应用场景
https://www.cnblogs.com/NiceCui/p/7794659.html
Strings, Lists, Hashes, Sets ,Ordered Sets, HyperLogLog(>=2.8.9)
redis消息队列使用 redis中的list数据结构实现(左进右出),然后加上发布/订阅模型(即观察者模式),把耦合点单独抽离出来作为第三方,隔离易变化的发送方和接收方。
redis 消息发布订阅与消息队列
https://blog.csdn.net/jslcylcy/article/details/78201812
Redis 在 3.0 版本以后就推出了集群模式。
Redis 集群采用了P2P的模式,完全去中心化。Redis 把所有的 Key 分成了 16384 个 slot,每个 Redis 实例负责其中一部分 slot 。集群中的所有信息(节点、端口、slot等),都通过节点之间定期的数据交换而更新。
Redis 客户端可以在任意一个 Redis 实例发出请求,如果所需数据不在该实例中,通过重定向命令引导客户端访问所需的实例。
slot机制
https://yq.aliyun.com/articles/66939
Redis 集群搭建详细指南
http://www.cnblogs.com/mafly/p/redis_cluster.html
redis集群的扩/缩容
https://blog.csdn.net/a491857321/article/details/52058693
主要通过MULTI(开始事务)、WATCH(监视key,有变化则撤销事务)、EXEC(执行事务)实现
Redis 事务
https://www.w3cschool.cn/redis/redis-transactions.html
分布式锁一般有数据库乐观锁、基于Redis的分布式锁以及基于ZooKeeper的分布式锁三种实现方式
锁的可靠性:互斥性、死锁、解锁还需加锁人
基于Redis的分布式锁
https://www.w3cschool.cn/redis/redis-yj3f2p0c.html
redis在默认情况下,是不会生成日志文件的,所以需要配置(建议使用config get/set进行配置)。
redis日志配置方法
https://blog.csdn.net/lhjllff12345/article/details/73564959/
目前,通常的设计思路是利用Replication机制来弥补aof、snapshot性能上的不足,达到了数据可持久化。即Master上Snapshot和AOF都不做,来保证Master的读写性能,而Slave上则同时开启Snapshot和AOF来进行持久化,保证数据的安全性。
关于Redis持久化
http://www.cnblogs.com/chenpingzhao/p/5158791.html
redis通过SAVE、BGSAVE来进行备份(在redis安装目录中得到dump.rdb)
通过CONFIG GET dir得到安装目录(如/usr/local/redis/bin)
通过将dump.rdb放置在安装目录,即可实现数据恢复
注:BGSAVE、SAVE最好放在slave上进行,原因见9
server.maxmemory - 必须设置,不设置则在超过最大内存时,redis崩溃
maxmemory-policy - 设置淘汰机制
redis主要有6种淘汰机制
volatile-lru - 从已设置过期时间的数据集中淘汰较少使用的(Least Recently Used)
volatile-ttl - 从已设置过期时间的数据集中淘汰将要过期的
volatile-random - 从已设置过期时间的数据集中随机淘汰数据
allkeys-lru - 从所有数据集中淘汰较少使用的
allkeys-random - 从所有数据集中随机淘汰数据
no-enviction - 禁止驱除数据
注1:因为涉及到分布式内存下LRU算法的时间与空间复杂度,redis的lru不是可靠的lru
注2:一般在redis做缓存+持久化数据库的系统中,使用volatile-lru(幂律分布)或volatile-random(平等分布);在redis只做缓存数据库的系统中,使用allkeys-lru(幂律分布)或allkeys-random(平等分布)
《redis学习》-- 缓存淘汰策略
https://blog.csdn.net/lizhi_java/article/details/68953179?locationNum=1&fps=1
标签:policy article 系统 slot 结构 keep 乐观锁 节点 隔离
原文地址:https://www.cnblogs.com/yc913344706/p/9201246.html