redis缓存策略哪几种 redis缓存算法

redis源码解读:单线程的redis是如何实现高速缓存的?1、网络高并发,高流量的数据处理 。一个异步 , 高效,且对CPU要求不高的网络模型,这个模型主要是由OS来提供的,目前在LINUX最主流使用的是EPOLL,这个网上介绍很多,主要是基于事件驱动的一个异步模型 。
2、Redis是一种内存高速cache,如果使用redis缓存 , 那经常被访问的内容会被缓存在内存中,需要使用的时候直接从内存调?。?不知道比硬盘调取快了多少倍,并且支持复杂的数据结构 , 应用于许多高并发的场景中 。
3、暂存请求数据 。输入缓冲区会先把客户端发送过来的命令暂存起来 , Redis 主线程再从输入缓冲区中读取命令 , 进行处理 。为了避免客户端和服务器端的请求发送和处理速度不匹配,这点和等下要说的输出缓冲区是一样的 。
4、redis缓存原理是sql语句时key值,查询结果resultSet是value,当同一个查询语句访问时(select * from t_product) , 只要曾经查询过,调用缓存直接返回resultSet,节省了数据库读取磁盘数据的时间 。
Redis的LRU缓存淘汰算法实现在实现LRU算法过程中,无非两种操作,查找和修改,使用散列数组实现查找时间复杂度为O(1) , 使用双向链表实现修改复杂度为O(1),并且双向链表还可以维护访问顺序,所以使用这种方式 , 可以达到O(1) 。
当要缓存某个数据的时候,先在链表中查找这个数据 。如果没有找到,则直接将数据放到链表的尾部;如果找到了 , 我们就把它移动到链表的尾部,然后淘汰头部数据 。
Redis 内存淘汰机制有以下几种策略:noeviction:当内存不足以容纳新写入数据时 , 新写入操作会报错 。(Redis 默认策略)allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的 Key 。
LRU (less recently used)是Redis唯一支持的回收算法,当缓存占用的内存空间达到设置的最大空间时,会自动驱逐老的数据 。
Redis缓存淘汰策略值得一提的是,设置expire会消耗额外的内存,所以 使用allkey-lru可以更高效地使用内存  , 因为这样使用的时候不需要设置过期时间 。Redis使用的并不是完全LRU算法,而是近似LRU算法 。
noeviction:默认策略 , 不淘汰数据;大部分写命令都将返回错误(DEL等少数除外) 。allkeys-lru:从所有数据中根据 LRU 算法挑选数据淘汰 。volatile-lru:从设置了过期时间的数据中根据 LRU 算法挑选数据淘汰。
redis根据maxmemory-samples随机抽取一部分数据,将最旧的数据淘汰,指到内存降下来 。
springboot整合Redis参考,SpringBoot整合Redis - (jianshu.com) 在整合Redis的基础上,在新加监听配置 监听配置类 监听类 将Redis用作缓存时,如果内存空间用满 , 就会自动驱逐老的数据 。
redis数据类型和应用场景1、redis的五种数据类型分别是string、hash 、list、set、zset。string string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value 。string类型是二进制安全的 。
2、Redis的字符串类型,可以存储字符串、整数或浮点数,如果存储的是整数或者浮点数,还能执行自增或自减操作 。
【redis缓存策略哪几种 redis缓存算法】3、redis支持的数据类型就是列表、哈希、集合并和删除、获取子列表等 。Redis支持的五种数据类型包括String、Hash、List、Set、Zset,其中,String类型的值可以是字符串、数字或二进制,但值最大不能超过512MB 。
4、ziplist的entry 的格式:prevlen encodinglen entry-data prevlen :前一个元素的长度 , 相当于节点保存前一个元素的指针 。

    推荐阅读