首页 > 数据库 >redis学习

redis学习

时间:2022-12-04 17:35:03浏览次数:32  
标签:缓存 过期 redis 学习 内存 key 淘汰

一.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

相关文章