一.redis相关概念
1.redis是一个key-value的内存数据库
2.redis的优势:(1)支持丰富的数据类型(2)纯内存操作速度快 (3)可持久化数据(RDB AOF)
3.redis支持的基本数据类型:(1)字符串-最多容纳512M内容 (2)List (3) Set (4)sorted Set (5)hash
4.redis的内存淘汰策略(配置文件里配置)(1)noeviction(内存不够用直接返回错误) (2)allkeys-lru(淘汰最少使用的key) (3)volatile-lru(从存在过期集合中淘汰最少使用的键) (4)allkeys-random:随机淘汰 (5)从存在过期的集合中随机淘汰 (6)从存在过期键的集合中,淘汰ttl时间最小的(即键快到达过期时间的)
5.Mysql里有2000w条数据,Redis只存20w怎么保证都是热点数据 ----通过redis的内存淘汰策略。淘汰最少使用的key
6.redis集群存在16384个哈希槽,每个key通过CRC16校验后对16384取模
7.redis管道:请求多个命令,在最后一次被响应(可以将多次IO缩减为1次,提升效率)
8.redis事务:事务中的命令要么全部被执行,要么全部不被执行。MULTI EXEC DISCARD WATCH
二.redis常用命令
1.设置key的值:set key ruxiaoqiang 获取key的值:get key 删除key: del key
2.设置失效时间:expire key 30 查看失效时间 ttl key
3.设置锁:setnx key (如果存在key返回0,不存在写入key的值返回1) setex key 330(失效时间) value (不会加锁,值为覆盖)
4.dbsize 获取redis的key的数量
三.redis常见问题
1.redis执行save 命令会阻塞进程,尽量使用bgsave
2.redis不保证数据一致性,会有写丢失的情况
3.redis过期键的删除策略:(1)定时删除--对CPU不友好 (2)定期删除 (3)惰性删除--对内存不友好
4.keys parrent(获取指定模式的key会阻塞进程) scan可以无阻塞的取,但是可能会有重复需要客户端去重
5.redis实现消息队列,利用list结构的(rpush生产消息 lpop消费消息 bpop阻塞式消费消息)
6.redis使用IO多路复用,多个网络连接复用同一个线程
7.缓存:缓存穿透:查询一个不存在的key 布隆过滤器 缓存击穿:某个热点key过期,大量请求过来请求DB 缓存雪崩:大量热点key过期,大量请求打进DB,造成异常(分散热点key的过期时间)
8.布隆过滤器原理: 解决某个key是不在集合中(不能百分百判断),一个元素加入集合会被hash多次
四.redis集群配置
1.Sentinal模式(哨兵模式---高可用)
2.Cluster模式(分片模式---内存不足可以扩展)
标签:缓存,过期,redis,学习,内存,key,淘汰 From: https://www.cnblogs.com/ruxiaoqiang/p/16950235.html