
redis
文章平均质量分 95
yue_hu
成长源于积累
展开
-
Redis的过期删除策略与淘汰策略
过期删除策略与淘汰策略过期策略淘汰策略Redis的异步删除过期策略Redis的所有数据结构都可以设置过期时间,Redis将设置了过期时间的Key放入一个独立的字典里,然后定时遍历这个字典来删除到期的Key。除此定时遍历外还会采用惰性策略来删除Key,当一个Key被访问时,先检查这个key的过期时间吗,如果已经过期,就立即删除。Redis的定时扫描策略每秒会进行10次扫描,但是并不是每一次都扫描字段中的所有Key,而是采用一种简单的贪心策略:从过期字典中随机选择20个key删除这20个key中的过原创 2021-09-29 14:32:01 · 451 阅读 · 0 评论 -
几个Redis的监控指令以及保护Redis安全
查看QPS指令>redis-cli info stats |grep opsinstantaneous_ops_per_sec:78可以查看Redis在1s内执行多少指令,如果QPS过高,可以用monitor指令监控指令。>redis-cli monitor查看连接了多少客户端:> redis-cli info clients# Clientsconnected_clients:124 # 这个就是正在连接的客户端数量client_longest_output_l原创 2021-09-27 16:32:55 · 896 阅读 · 0 评论 -
Redis的新数据结构Stream ---- 《Redis深度历险》读书笔记
1 StreamStream是Redis5.0新增的一个数据结构,是一个支持多播的可持久化消息队列。Stream拥有一个消息列表,将所有的消息串起来,每个消息都有一个唯一ID和对应的内容,消息是持久化的,Redis重启后,内容还在。每个Stream都有唯一的名称,就是Redis中的Key,结构在第一使用xadd指令追加消息时自动创建。每个Stream都可以挂多个消费组,每个消费组都有一个游标last_delivered_id用来记录当前消费到的位置,没个消费组都要有一个Stream内的唯一名称,并原创 2021-09-27 15:52:47 · 495 阅读 · 0 评论 -
Redis集群篇 ---- 《Redis深度历险》读书笔记
集群篇哨兵 sentinel脑裂非官方集群化解决方案Codis官方集群化解决方案Cluster跳转迁移哨兵 sentinelsentinel用来进行节点的自动主从切换。当主节点(master节点)发生故障时,sentinel自动选择最优的从节点(salvesj节点)切换为主节点,客户端也无需人工修改新的主节点地址再进行重启,而是问询sentinel,sentinel将最新的主节点地址告知客户端。整个切换过程无需人工干预即可完成,能够在故障发生时快速响应,尽快恢复服务。可以将sentinel集群看成一个原创 2021-09-24 15:10:45 · 406 阅读 · 0 评论 -
Redis原理篇 ---- 《Redis深度历险》读书笔记
原理篇单线程多路复用IO指令队列与响应队列定时任务通信协议RESP(Redis Serialization Protocol)客户端到服务端服务端到客户端持久化快照(RDB)AOF日志AOF重写fsync持久化选在从节点Redis4.0的混合持久化为什么不直接使用Redis做数据库管道事务multi/exec/discardwatch为什么Redis不支持回滚呢PubSub单线程Redis是单线程的!Node.js和Nginx都是线程的。Redis虽然是单线程,但是Redis的运算都是内存级别的,且原创 2021-09-22 16:20:43 · 1002 阅读 · 0 评论 -
Redis应用篇 ---- 《Redis深度历险》读书笔记
实用篇分布式锁延时队列位图HyperLogLog布隆过滤器简单限流漏斗限流(令牌限流)地理位置GeoHash扫描遍历与筛选高位进位加法扫描redis的渐进式扩容大key定位分布式锁从1开始慢慢进阶可以使用setnx来实现分布式锁,如果不存在占住,存在就失败。然后释放锁时del掉。为了避免加锁之后中断导致del没有执行而产生的死锁,可以通过expire给锁设置过期时间但是setnx和expire属于redis的两个指令,实际还是避免不了中断的影响的。因此Redis2.8提供一个指令set name原创 2021-09-13 14:46:24 · 641 阅读 · 0 评论 -
Redis基础篇 ---- 《Redis深度历险》读书笔记
redis的基本数据结构:String(字符串),hash(哈希),list(列表),set(集合),zset(有序集合).String(字符串)redis中的String在内部结构实现上类似于ArrayList,采用预分配冗余空间的方式来减少内存的频繁分配,实际容量capacity一般是大于实际字符串长度len。字符串长度小于1M时,采用二倍扩容的方式,每次扩容加倍现有空间,大于1M时,每次括1M的空间,最大长度是512M。如果value是一个整数,那么可以进行自增操作,范围是[-2^31, 2^31原创 2021-09-13 14:43:51 · 331 阅读 · 0 评论