![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
redis
王佑辉
个人笔记,多谢指正,不喜勿喷
展开
-
【redis】linux安装redis
5.redis默认安装路径:/usr/local/bin。1.进入/usr/local/redis/bin/目录。1.进入目录/usr/local/redis/bin。2.拷贝一个redis.conf。1.上传到/opt/redis。4.使用redis-cli连接。3.编辑redis.conf。3.查看redis进程。原创 2024-03-29 17:30:42 · 396 阅读 · 0 评论 -
【docker】docker部署单机redis
【代码】【docker】docker部署单机redis。原创 2023-07-27 22:34:34 · 560 阅读 · 0 评论 -
【redis】stream消息队列
***/@Slf4j@Override//TODO 消费异常时处理逻辑log.error("发生了异常", e);/*** 消息队列自定义注解*//*** 消息队列的 key* @return*//*** 消费者组* @return*//*** 消息反序列化类型* @return*//*** 是否自动 acknowledge* @return*//*** 每次拉取的消息数,线程池每秒拉取一次* @return*//**原创 2023-06-29 18:20:27 · 1483 阅读 · 4 评论 -
【springboot】缓存之@Cacheable、@CachePut、@CacheEvict的用法
*** @Description 学生服务实现类*/@Service@Autowired@Override/*** @Description 自定义Key生成器*/@Override/*** @Description 学生服务实现类*/@Service@Autowired@Override/*** @Description 自定义缓存解析器*/@Slf4j。原创 2023-04-20 15:08:05 · 7865 阅读 · 0 评论 -
【redis】redis分布式锁
9.非原子操作情况:线程1获取到锁,然后处理业务,业务处理完毕,准备释放锁,判断锁标识是否是线程1的,判断是的,开始释放锁,此时线程1阻塞(jvm发生FullGC),导致redis锁超时释放,GC完毕,线程2获取到锁,开始执行业务,业务时间较长,线程1阻塞结束,释放掉了锁,线程3获取到锁,执行业务,此时线程2和线程3的业务处理产生并发问题。1.mysql实现:利用mysql内部的写操作(本身的互斥锁),可以开启一个事务,执行业务,业务执行完之后,提交事务释放锁,当业务出现异常,事务回滚,释放锁。原创 2023-03-25 19:44:48 · 1607 阅读 · 0 评论 -
【redis】redis缓存击穿
1.一个被高并发访问且缓存重建业务比较复杂的key过期了,会造成大量的请求访问数据库2.key失效,线程A获取key缓存未命中,去查数据库,拿到数据,构建缓存,构建时间长,还没来得及将数据写入到缓存中,线程B获取key缓存也未命中,去查数据库,拿到数据,构建缓存,构建时间长,缓存还未写入。大量的并发都会去查数据库,给数据库造成压力。原创 2023-03-25 15:55:36 · 296 阅读 · 0 评论 -
【redis】redis缓存雪崩
1.同一时间大量的key同时失效或者redis宕机,大量请求直接访问数据库。原创 2023-03-25 15:07:02 · 154 阅读 · 0 评论 -
【redis】redis缓存穿透
1.客户端请求的数据在数据库中没有,这样缓存永远不会生效,所有客户端请求都会访问数据库。原创 2023-03-25 14:44:16 · 468 阅读 · 0 评论 -
【redis】redis缓存更新策略
1.内存淘汰:不用自己维护,利用redis的内存淘汰机制,当内存不足时自动淘汰部分数据,下次查询时更新缓存,一致性差,没有维护成本。2.线程A想把姓名李四改为张三,先更新数据库,姓名改为张三,删除缓存,执行完毕。3.线程A想把姓名李四改为张三,先更新数据库,姓名改为张三,删除缓存,执行完毕。2.线程A想把姓名改为张三,先删缓存,然后更新数据库,姓名是张三,执行完毕。3.线程B查询缓存,未命中,查询数据库,将张三写入缓存,拿到张三。3.线程B查询缓存,未命中,查询数据库,将张三写入缓存,拿到张三。原创 2023-03-25 13:16:31 · 747 阅读 · 0 评论 -
【redis】redis淘汰策略
4.volatile-lfu:会使用lfu算法筛选设置了过期时间的键值对删除(Least Frequently Used的缩写,即最不经常使用)3.volatile-lru:会使用lru算法筛选设置了过期时间的键值对删除(Least Recently Used的缩写,即最近最少使用)1.volatile-ttl:在筛选时,会针对设置了过期时间的键对值,根据过期时间的先后进行删除,越早过期的越先被删除。3.主动清理策略在redis4.0之前一共实现了6种内存淘汰策略,在4.0之后,增加了2种,总共8种。原创 2023-03-25 08:42:30 · 767 阅读 · 0 评论 -
【redis】key过期了为什么不释放内存
3.定时删除:由于惰性删除策略无法保证冷数据被及时删掉,redis会定期(默认每100ms)主动淘汰一批已过期的key,所以可能会出现部分key已经过期但还没有被清理的情况,导致内存没有释放。2.惰性删除:当读\写一个已经过期的key时,会触发惰性删除策略,判断key是否过期,如果过期了直接删除这个key。1.redis对过期的key的处理一般有惰性删除和定时删除两种策略。原创 2023-03-25 08:21:50 · 189 阅读 · 0 评论 -
【redis】redis单线程为什么能这么快
4.高效的存储结构:全局hash表、跳表、压缩列表、链表等。1.redis执行的命令是单线程执行的,没有线程切换开销。3.基于IO多路复用机制提升了redis的i/o利用率。2.redis命令执行是基于内存的。原创 2023-03-25 08:10:07 · 48 阅读 · 0 评论 -
【redis】redis常见命令
6.blpop key timeout 从key列表表头弹出一个元素,若列表中没有元素,阻塞等待timeout秒,timeout=0则一直阻塞。6.srandmember key count 从集合key中选出count个元素,元素不从key中删除。1.sadd key member 往集合key中存入元素,元素存在则忽略,key不存在则新建。7.spop key count 从集合key中选出count个元素,元素从key中删除。原创 2023-03-24 23:09:01 · 486 阅读 · 0 评论