![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Redis
文章平均质量分 72
Redis
在路上288
这个作者很懒,什么都没留下…
展开
-
Redis缓存淘汰策略
Redis内存淘汰策略:1、不进行内存淘汰策略:noeviction 策略:一旦缓存被写满了,再有写请求来时,Redis 不再提供服务,而是直接返回错误,3.0版本后的默认策略。2、进行内存淘汰策略:在设置了过期时间的数据中进行淘汰,分为四种情况:1、volatile-ttl在筛选时,会针对设置了过期时间的键值对,根据过期时间的先后进行删除,越早过期的越先被删除。2、volatile-random在设置了过期时间的键值对中,进行随机删除3、volatile-lru使用 LRU(Least原创 2021-10-05 09:48:22 · 198 阅读 · 0 评论 -
redis事物
Redis 事务的本质是通过MULTI、EXEC、WATCH等一组命令的集合。事务支持一次执行多个命令,一个事务中所有命令都会被序列化。在事务执行过程,会按照顺序串行化执行队列中的命令,其他客户端提交的命令请求不会插入到事务执行命令序列中。总结说:redis事务就是一次性、顺序性、排他性的执行一个队列中的一系列命令。Redis事务的三个阶段1、事务开始 MULTI2、 命令入队3、事务执行 EXEC事务执行过程中,如果服务端收到有EXEC、DISCARD、WATCH、MULTI之外的请求,将原创 2021-10-05 09:48:43 · 43 阅读 · 0 评论 -
redis做数据库缓存
只读缓存使用只读缓存时,是先把修改写到后端数据库中,再把缓存中的数据删除。当下次访问这个数据时,会以后端数据库中的值为准,重新加载到缓存中。这样做的优点是,数据库和缓存可以保证完全一致,并且缓存中永远保留的是经常访问的热点数据。缺点是每次修改操作都会把缓存中的数据删除,之后访问时都会先触发一次缓存缺失,然后从后端数据库加载数据到缓存中,这个过程访问延迟会变大。读写缓存使用读写缓存时,是同时修改数据库和缓存中的值。这样做的优点是,被修改后的数据永远在缓存中存在,下次访问时,能够直接命中缓存,不用再从原创 2021-10-05 09:48:58 · 883 阅读 · 0 评论 -
redis变慢后的一些分析优化办法
1、使用复杂度过高的命令(例如SORT/SUION/ZUNIONSTORE/KEYS),或一次查询全量数据(例如LRANGE key 0 N,但N很大)分析:a) 查看slowlog是否存在这些命令b) Redis进程CPU使用率是否飙升(聚合运算命令导致)解决:a) 不使用复杂度过高的命令,或用其他方式代替实现(放在客户端做)b) 数据尽量分批查询(LRANGE key 0 N,建议N<=100,查询全量数据建议使用HSCAN/SSCAN/ZSCAN)2、操作bigkey分析:a)原创 2021-10-05 09:49:18 · 296 阅读 · 0 评论 -
redis作为消息队列使用
消息队列的三个典型特征:消息保序、处理重复的消息和保证消息可靠性.消息保序:虽然消费者是异步处理消息,但是,消费者仍然需要按照生产者发送消息的顺序来处理消息,避免后发送的消息被先处理了。对于要求消息保序的场景来说,一旦出现这种消息被乱序处理的情况,就可能会导致业务逻辑被错误执行,从而给业务方造成损失。重复消息处理:消费者从消息队列读取消息时,有时会因为网络堵塞而出现消息重传的情况。此时,消费者可能会收到多条重复的消息。对于重复的消息,消费者如果多次处理的话,就可能造成一个业务逻辑被多次执行,如果业务逻辑原创 2021-10-06 11:31:52 · 425 阅读 · 0 评论 -
Redis哨兵模式
主库挂了如何处理?redis通过哨兵模式进行主从库切换,哨兵其实就是一个运行在特殊模式下的 Redis 进程,主从库实例运行的同时,它也在运行。哨兵主要负责的就是三个任务:监控、选主(选择主库)和通知。监控是指哨兵进程在运行时,周期性地给所有的主从库发送 PING 命令,检测它们是否仍然在线运行。如果从库没有在规定时间内响应哨兵的 PING 命令,哨兵就会把它标记为“下线状态”;同样,如果主库也没有在规定时间内响应哨兵的 PING 命令,哨兵就会判定主库下线,然后开始自动切换主库的流程。为了避免集群网络原创 2021-10-06 11:32:09 · 137 阅读 · 0 评论 -
Redis数据库主从同步
第一阶段是主从库间建立连接、协商同步的过程,主要是为全量复制做准备。在这一步,从库和主库建立起连接,并告诉主库即将进行同步,主库确认回复后,主从库间就可以开始同步了。具体来说,从库给主库发送 psync 命令,表示要进行数据同步,主库根据这个命令的参数来启动复制。psync 命令包含了主库的 runID 和复制进度 offset 两个参数。runID,是每个 Redis 实例启动时都会自动生成的一个随机 ID,用来唯一标记这个实例。当从库和主库第一次复制时,因为不知道主库的 runID,所以将 run.原创 2021-10-06 11:32:21 · 528 阅读 · 0 评论 -
redis持久化
持久化就是把内存的数据写到磁盘中去,防止服务宕机了内存数据丢失,Redis 的持久化主要有两大机制,即 AOF(Append Only File)日志和 RDB 快照。AOFAOF持久化(即Append Only File持久化),则是将Redis执行的每次写命令记录到单独的日志文件中,当重启Redis会重新将持久化的日志中文件恢复数据。AOF 里记录的是 Redis 收到的每一条命令,这些命令是以文本形式保存的。其中,“*3”表示当前命令有三个部分,每部分都是由“$+数字”开头,后面紧跟着具体的原创 2021-10-06 11:32:37 · 48 阅读 · 0 评论 -
Redis数据类型
Redis主要有5种数据类型,包括String,List,Set,Zset,Hash,满足大部分的使用要求,还有一些扩展数据类型分别是 Bitmap、HyperLogLog 和 GEO。String:常用命令: set,get,decr,incr,mget 等,String数据结构是简单的key-value类型,value其实不仅可以是String,也可以是数字。 常规key-value缓存应用; 常规计数:微博数,粉丝数等。2.Hash:常用命令: hget,hset,hgetall 等,Hash原创 2021-10-06 11:30:29 · 66 阅读 · 0 评论 -
Redis问题记录
Redis高性能非关系型(NoSQL)的键值对数据库,Redis 可以存储键和八种不同类型的值之间的映射。键的类型只能为字符串,值支持八种数据类型:字符串、列表、集合、散列表、有序集合。Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。 Redis的出色之处不仅原创 2021-10-04 11:00:15 · 60 阅读 · 0 评论