Redis
文章平均质量分 68
Redis学习
唥雨凊
一个努力学习的程序小白
展开
-
Redis部署方式
Redis有下面四种部署方式模式优点缺点单机版架构简单,部署方便机器故障、容量瓶颈、QPS瓶颈主从复制高可靠性,读写分离故障恢复复杂,主库的写跟存受单机限制Sentinel 哨兵集群部署简单,HA原理繁琐,slave存在资源浪费,不能解决读写分离问题Redis Cluster数据动态存储solt,可扩展,高可用客户端动态感知后端变更,批量操作支持查redis主从复制该模式下 具有高可用性且读写分离, 会采用 增量同步 跟 全量同步 两种机制。原创 2021-05-09 10:14:48 · 7280 阅读 · 0 评论 -
Redis常见问题
常见问题数据一致性怎么保证?先删缓存,再更新数据库先删除缓存,数据库还没有更新成功,此时如果读取缓存,缓存不存在,去数据库中读取到的是旧值,缓存不一致发生。解决方案延时双删的方案的思路是,为了避免更新数据库的时候,其他线程从缓存中读取不到数据,就在更新完数据库之后,再sleep一段时间,然后再次删除缓存。sleep的时间要对业务读写缓存的时间做出评估,sleep时间大于读写缓存的时间即可。流程如下:线程1删除缓存,然后去更新数据库线程2来读缓存,发现缓存已经被删除,所以直接从数据库中读原创 2021-05-08 10:49:11 · 149 阅读 · 0 评论 -
Redis线程模型
Redis 的线程模型是怎么样的?redis 内部使用文件事件处理器 file event handler,这个文件事件处理器是单线程的,所以 redis 才叫做单线程的模型。它采用 IO 多路复用机制同时监听多个 socket,根据 socket 上的事件来选择对应的事件处理器进行处理。文件事件处理器的结构包含 4 个部分:多个 socketIO 多路复用程序文件事件分派器事件处理器(连接应答处理器、命令请求处理器、命令回复处理器)多个 socket 可能会并发产生不同的操作原创 2021-05-08 10:47:04 · 73 阅读 · 0 评论 -
Redis高并发问题
缓存穿透redis缓存和数据库中没有相关数据(例用户直接携带id<=0的参数不断发起请求),redis中没有这样的数据,无法进行拦截,直接被穿透到数据库,导致数据库压力过大宕机。解决方案对不存在的数据缓存到redis中,设置key,value值为null(不管是数据未null还是系统bug问题),并设置一个短期过期时间段,避免过期时间过长影响正常用户使用。拉黑该IP地址对参数进行校验,不合法参数进行拦截布隆过滤器 将所有可能存在的数据哈希到一个足够大的bitmap(位图)中,一个一定不存原创 2021-05-08 10:46:19 · 202 阅读 · 0 评论 -
Redis持久化
RDBRDB 持久化机制,是对 Redis 中的数据执行周期性的持久化。更适合做冷备。优点:压缩后的二进制文,适用于备份、全量复制,用于灾难恢复加载RDB恢复数据远快于AOF方式,适合大规模的数据恢复。如果业务对数据完整性和一致性要求不高,RDB是很好的选择。数据恢复比AOF快。缺点:RDB是周期间隔性的快照文件,数据的完整性和一致性不高,因为RDB可能在最后一次备份时宕机了。备份时占用内存,因为Redis 在备份时会独立fork一个子进程,将数据写入到一个临时文件(此时内存中的数据是原原创 2021-05-08 10:45:21 · 95 阅读 · 0 评论 -
Redis过期和淘汰
Redis三种过期策略定时过期每个设置过期时间的key都需要创建一个定时器,到过期时间就会立即对key进行清除。该策略可以立即清除过期的数据,对内存很友好;但是会占用大量的CPU资源去处理过期的数据,从而影响缓存的响应时间和吞吐量。惰性过期只有当访问一个key时,才会判断该key是否已过期,过期则清除。该策略可以最大化地节省CPU资源,却对内存非常不友好。极端情况可能出现大量的过期key没有再次被访问,从而不会被清除,占用大量内存。定期过期每隔一定的时间,会扫描一定数量的数据库的expires字原创 2021-05-08 10:44:09 · 177 阅读 · 0 评论 -
布隆过滤器
布隆过滤器参考:https://www.cnblogs.com/qdhxhz/p/11237246.htmlhttps://zhuanlan.zhihu.com/p/43263751一、实现原理HashMap 的问题讲述布隆过滤器的原理之前,我们先思考一下,通常你判断某个元素是否存在用的是什么?应该蛮多人回答 HashMap 吧,确实可以将值映射到 HashMap 的 Key,然后可以在 O(1) 的时间复杂度内返回结果,效率奇高。但是 HashMap 的实现也有缺点,例如存储容量占比高,考虑到负原创 2020-10-26 22:05:36 · 783 阅读 · 0 评论 -
布谷鸟过滤器
布谷鸟过滤器参考:布谷鸟过滤器为什么会有布谷鸟过滤器?因为布隆过滤器无法删除,导致后续精确性不断的降低,为了解决布隆过滤器不能删除元素的问题,布谷鸟过滤器横空出世。布谷鸟过滤器原理布谷鸟过滤器源于布谷鸟哈希算法,布谷鸟哈希算法源于生活 —— 那个热爱「鸠占鹊巢」的布谷鸟。布谷鸟喜欢滥交(自由),从来不自己筑巢。它将自己的蛋产在别人的巢里,让别人来帮忙孵化。待小布谷鸟破壳而出之后,因为布谷鸟的体型相对较大,它又将养母的其它孩子(还是蛋)从巢里挤走 —— 从高空摔下夭折了。最简单的布谷鸟哈希结构是一转载 2021-04-13 10:24:59 · 2422 阅读 · 1 评论 -
Redis总结(大纲图)
Redis总结来源:https://mp.weixin.qq.com/s/lsOYc2pxXo1vYs8_E0R3uQ原创 2021-03-13 15:48:41 · 184 阅读 · 0 评论 -
Redis学习:基本知识点(转载)
转载于:https://mp.weixin.qq.com/s/lsOYc2pxXo1vYs8_E0R3uQ本篇文章仅供于个人的学习和记录1、基本类型及底层实现1.1、String用途:适用于简单key-value存储、setnx key value实现分布式锁、计数器(原子性)、分布式全局唯一ID。底层:C语言中String用char[]数组表示,源码中用SDS(simple dynamic string)封装char[],这是是Redis存储的最小单元,一个SDS最大可以存储512M信息转载 2020-12-30 23:04:10 · 306 阅读 · 0 评论 -
springboot整合redis(数据库演示)
springboot整合redis(数据库演示)redis配置文件RedisConfig接下来在 config 包下创建一个 Redis 配置类 RedisConfig,在配置类上加入注解 @Configuration,注入一个 CacheManager 来配置一些相关信息/** * <p> * redis配置 * </p> * */@Configuration@EnableCachingpublic class RedisConfig { /**原创 2020-09-14 14:56:16 · 503 阅读 · 0 评论 -
RedisUtils工具类
RedisUtils工具类(转载)/** * Redis工具类 */@Componentpublic final class RedisUtil { private RedisTemplate redisTemplate; //注入自定义的RedisTemplate public void setRedisTemplate(RedisTemplate redisTemplate) { this.redisTemplate = redisTempl原创 2020-09-04 15:27:14 · 7403 阅读 · 1 评论 -
自定义 RedisTemplate
自定义 RedisTemplate@Configurationpublic class RedisConfig { // 这是我给大家写好的一个固定模板,大家在企业中,拿去就可以直接使用! // 自己定义了一个 RedisTemplate @Bean @SuppressWarnings("all") public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory fa原创 2020-09-04 14:22:07 · 874 阅读 · 2 评论 -
linux安装redis教程
linux安装redis教程(小白向)1、安装gccyum install gcc -c++2、升级gcc(因为版本过低会导致编译失败所以要升级gcc版本)yum -y install centos-release-sclyum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutilsscl enable devtoolset-9 bash3、设置永久升级:echo “source /opt/rh/devto原创 2020-08-09 15:43:41 · 204 阅读 · 0 评论