
Redis
文章平均质量分 50
一只小小狗
大家好我是练习时长2年半的程序员
展开
-
Redis实现分布式锁
比如:1000个锁,分成10段,每一段100个锁,每一段对应一个Redis实例。(每个锁的名字都叫Product_id_1…Product_id_n),欢迎大家加入我的开源项目,或者(在我的主页联系我)加入你们的开源项目,点点Github-Stars。setnx: 如果key不存在,则设置key的值为value,返回1;如果key已经存在,则返回0。通过Redis的setnx命令来实现分布式锁。原创 2024-03-10 16:44:01 · 1267 阅读 · 0 评论 -
Redis分布式锁待续
为了保证数据的最终一致性,使用Redis分布式锁当多个进程不在同一个系统中,用分布式锁控制多个进程对资源的访问。原创 2022-07-23 18:58:57 · 820 阅读 · 0 评论 -
Redis数据结构
如有错误欢迎指正原创 2022-07-23 18:39:28 · 415 阅读 · 0 评论 -
Redis主从同步机制
增量复制的话只复制挤压缓存区中数据,如果主从节点offset差距过大,可能会导致必须使用全量复制。在slave完成初始化且开始正常工作后,master发生的写操作会同步到slave上。原创 2022-07-23 18:29:18 · 1394 阅读 · 0 评论 -
Redis持久化机制RDB、AOF
默认开启的是RDB如果配置同时开启了RDB和AOF,数据恢复Redis会优先选择AOF恢复。原创 2022-07-23 17:43:07 · 216 阅读 · 0 评论 -
Redis 集群hash分片算法(槽位定位算法)
这个分片使用的是分桶思想,给每个节点固定的槽位,将范围内的数据分给固定的节点。原创 2022-07-23 16:05:09 · 1072 阅读 · 0 评论 -
Redis 主从、哨兵、集群架构有缺点比较
在主从的基础上增加哨兵节点去监控主节点状态,如果主节点异常会进行主从切换,全程自动化。将数据存到不同的节点中,并不会每个节点都重复存储。如果主节点发生宕机,会选举从节点当做主节点。可以水平扩容,到不超过1000个节点。...原创 2022-07-23 15:50:10 · 1260 阅读 · 0 评论 -
Redis 删除Key命令会导致阻塞么?
都会导致Redis阻塞发生。原创 2022-07-22 18:29:35 · 724 阅读 · 0 评论 -
Redis中 LRU和LFU的淘汰策略区别
大部分默认都用LRU淘汰策略,当存在大量热点缓存数据使用LFU会更好。淘汰最近一段时间访问次数最少的数据。淘汰很久没有访问的数据。原创 2022-07-22 17:52:38 · 376 阅读 · 0 评论 -
Redis Key没设置过期时间,为什么被主动删除了
Redis已使用超过了内存限定,maxmemory,触发主动清理策略。原创 2022-07-22 17:49:07 · 1576 阅读 · 0 评论 -
Redis的过期策略以及内存淘汰机制,Key过期了为什么没释放内存
redis采用的是定期删除+惰性删除策略。原创 2022-07-22 17:33:09 · 309 阅读 · 0 评论 -
(Zset)Redis底层是如何用跳表进行存储的
Redis的ZSet集合和java中Set集合非常相似,都是唯一不重复的元素,不同的是Zset中有一个叫做权重的score,会进行有序的排序。Redis使用跳表来存储Zset集合。原创 2022-07-22 16:42:11 · 291 阅读 · 0 评论 -
Redis单线程为什么还能这么快
如有错误欢迎指正原创 2022-07-20 18:10:49 · 203 阅读 · 0 评论 -
Redis到底是单线程还是多线程
也就是单线程指的是键值对读写是单线程的,而持久化和集群同步数据,都是额外线程执行的。采用了多线程,而键值对读写还是单线程的,Redis依然并发安全。Redis6.0版本之前的单线程是指其。Redis6.0引入的多线程是指。...原创 2022-07-20 17:58:34 · 281 阅读 · 0 评论 -
布隆过滤器 使用测试(Google Guava)
布隆过滤器 使用测试Google Guava一、简介二、原理布隆过滤器添加元素布隆过滤器查询元素三、使用Google Guava的BloomFilter添加依赖代码案例测试 当改变预估数时候对真实误判率的影响应用场景一、简介布隆过滤器(Bloom Filter),以空间换时间的算法。布隆过滤器由布隆在 1970 年提出。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。优点 空间效率和查询时间缺点 有一定的误识别率和删除困难二、原理假如有原创 2022-03-18 14:16:24 · 1327 阅读 · 0 评论 -
Unable to connect to Redis; nested exception is io.lettuce.core.RedisConnectionException: Unable to
解决:springboot Redis连接不上第一步:找到redis的配置文件 redis.conf第二步:关闭保护模式 protected-mode 修改(yes - > no)第三步:如果是服务器需要打开防火墙的端口号第一步:找到redis的配置文件 redis.conf修改bind 为0.0.0.0 ,所有的ip都可以连接可以设置密码来解决安全问题################################## NETWORK ############################原创 2022-02-07 15:01:11 · 6081 阅读 · 0 评论 -
redis.clients.jedis.exceptions.JedisMovedDataException: MOVED
使用 JedisShardInfo做jedis集群时候报错#MOVED表示使用的是Redis群集。而 Jedis 不是集群模式。将连接对象从 Jedis 换成 JedisCluster。//import redis.clients.jedis.HostAndPort;//import redis.clients.jedis.JedisCluster; HostAndPort hostAndPort = new HostAndPort(host, port);Set<HostAndPort&原创 2021-08-07 16:34:20 · 3080 阅读 · 0 评论 -
Redis缓存穿透、缓存击穿和缓存雪崩
Redis缓存穿透和雪崩(面试高频,工作常用)1.缓存穿透?(查不到)2.缓存穿透解决方案布隆过滤器缓存空对象3.缓存击穿?(量太大)4.缓存击穿解决方案5.缓存雪崩6.缓存雪崩解决方案1.缓存穿透?(查不到)大面积没有数据,缓存中没有查不到缓存穿透的概念很简单,用户想要查询一个数据,发现redis内存数据库没有,也就是缓存没有命中,于是向持久层数据库查询。发现也没有,于是本次查询失败。当用户很多的时候,缓存都没有命中(秒杀!),于是都去请求了持久层数据库。这会给持久层数据库造成很大的压力,这时候原创 2021-02-01 20:38:02 · 165 阅读 · 0 评论 -
Redis集群 哨兵模式和创建哨兵
哨兵模式(自动选举主机的模式)什么是哨兵模式?哨兵的作用1.创建哨兵sentinel.conf配置文件2.启动哨兵3.主机挂掉,进行投票4.当6379重写连接,6391还是主机,而6379变成了从机。优点缺点哨兵模式全部配置 配置文件这才是企业中真实使用的方式什么是哨兵模式?自动的将从库变为主库是一种特殊的模式,Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是:哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。哨兵的作用通过原创 2021-02-01 20:06:04 · 260 阅读 · 0 评论 -
Redis主机宕机后手动配置主机
链式模型上一个主机连接下一个从机79是主节点 80是从节点 81也是从节点谋朝篡位 SLAVEOF no one从机输入,可以自己当主机当断掉79主机时,80从机输入SLAVEOF no one会发生什么?80会变成主机,但是当79主机回来以后,80还是主机,79已经被架空。...原创 2021-02-01 19:31:58 · 222 阅读 · 0 评论 -
主从复制之复制原理
主从复制之复制原理Slave启动成功连接到 master后会发送一个sync同步命令Master接到命令,启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,并完成一次完全同步。 全量复制: 而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。增量复制: Master继续将新的所有收集到的修改命令依次传给slave,完成同步但是只要是重新连接master,一次完全同步(全量复制)将被自动执行...原创 2021-02-01 19:19:58 · 141 阅读 · 0 评论 -
Redis集群环境搭建
Redis集群环境搭建1.概念2.主从复制的作用主要包括︰3.为什么要进行Redis集群4.环境配置4.1端口号4.2进程文件目录4.3日志名字4.4dump.rdb文件名修改4.5 搭建完毕1.概念主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master/leader),后者称为从节点(slave/follower);数据的复制是单向的,只能由主节点到从节点。Master以写为主,Slave以读为主。默认情况下,每台Redis服务器都是主节点;且一个主节原创 2021-02-01 19:01:51 · 121 阅读 · 0 评论 -
Redis订阅发布
Redis订阅发布Redis发布订阅(pub/sub)是一种消息通信模式:发送者发送信息,订阅者接收信息。微博微信…Redis客户端可以订阅任意数量的频道角色有:消息发布者,频道,消息订阅者1. Subscribe 订阅给定的一个或多个频道的信息。订阅给定的一个或多个频道的信息。 SUBSCRIBE channel [channel ...] 频道...2.Publish 将信息发送到指定的频道。将信息发送到指定的频道。 PUBLISH channel message原原创 2021-02-01 17:59:37 · 211 阅读 · 0 评论 -
Redis持久化之AOF(Append Only File)
Redis持久化之AOF1.什么是AOF(Append Only File)2.默认是不开启 AOF模式的3.如果启用4.appendonly.aof 记录所有写操作5.破坏appendonly.aof文件如何恢复6.优点7.缺点1.什么是AOF(Append Only File)将所有命令都记录下来,history,恢复的时候就把这个文件全部再执行一遍。以日志的形式来记录每个写操作,将Redis执行过的所有指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件重原创 2021-02-01 17:23:37 · 338 阅读 · 0 评论 -
Redis持久化之RDB(Redis DataBase)
Redis持久化之RDB1.什么是RDB(Redis DataBase)?1.1 触发机制1.2如何恢复rdb文件1.3 优点1.4 缺点1.什么是RDB(Redis DataBase)?在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里Redis会单独创建 。( fork )一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程是不进行任何I0操作的原创 2021-02-01 16:53:05 · 299 阅读 · 0 评论 -
Redis.conf配置文件详解
Redis.conf详解1.配置文件大小写不敏感2.把多个配置文件都配置过来3.网络访问(默认只能本地访问)4.是否受到保护模式 默认开启yes5.默认端口6.是否以守护进程的方式运行7.日志级别 一般也不用去设置8.数据库数量 (默认有16个)9.是否显示启动logo (默认是打开)10.快照SNAPSHOTTING 自定义11.持久化出现错误是否进行继续工作(默认yes)12.是否压缩rdb文件(默认是开启yes)13.保存rdb文件的时候,是否进行错误校验 (默认yes)14.rdb文件保存的目原创 2021-02-01 15:14:04 · 253 阅读 · 0 评论 -
SpringBoot集成Redis
SpringBoot集成Redis1.创建项目2.分析源码3.pom依赖4.配置连接5.测试6.自定义Redis配置类7.实战SpringBoot操作数据:spring-data jpa jdbc mongoDB redisSrpingData 也是和SpringBoot齐名的项目!在SpringBoot2.x之后,原来使用的jedis被替换成了lettucejedis:采用的直连,多个线程操作的话,是不安全的。如果想避免不安全就要使用jedis pool,更像Bio 模式。lettuce:采原创 2021-01-31 23:21:19 · 100 阅读 · 2 评论 -
通过jedis再次理解事务
通过jedis再次理解事务import com.alibaba.fastjson.JSONObject;import redis.clients.jedis.Jedis;import redis.clients.jedis.Transaction;/** * @author 一只小小狗 * @version 1.0.0 * @ClassName TestPing.java * @Description TODO * @createTime 2021年01月29日 18:41:00 */原创 2021-01-29 20:46:08 · 99 阅读 · 0 评论 -
宝塔 redis 远程连接
宝塔 redis 远程连接1.查看redis配置文件2.阿里云放行 端口号 宝塔安全添加3.连接成功原创 2021-01-29 19:44:21 · 1735 阅读 · 0 评论 -
通过Jedis操作Redis
通过Jedis操作Redis什么是Jedis ?1.pom导入坐标2.连接数据库3.操作命令什么是Jedis ?是Redis官方推荐java连接开发工具!使用Java操作Redis中间件。1.pom导入坐标 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> &l原创 2021-01-29 19:38:33 · 109 阅读 · 0 评论 -
Exception in thread “main“ redis.clients.jedis.exceptions.
解决Exception in thread “main“ redis.clients.jedis.exceptions.1.在网上找了很多问题,很大的原因就是防火墙没有关闭 ,需要输入一下命令即可,自己的电脑上显示关了没有用,必须在虚拟机中输入下面命令systemctl stop firewalld.service2.注释掉 bind 127.0.0.1或者改成自己的虚拟机地址3.关闭安全模式: protected-mode no...原创 2021-01-29 19:05:16 · 1142 阅读 · 0 评论 -
Redis实现乐观锁
Redis实现乐观锁Redis 监视事务正常执行成功!测试多线程修改值,使用watch可以当做redis的乐观锁操作Watch 监视keyUnwatch 取消监视悲观锁:什么时候都会出问题,无论做什么都会加锁!乐观锁:什么时候都不会出现问题,所以不会上锁!更新数据的时候去判断一下,这个期间是否有人修改过数据。获取version更新的时候比较versionRedis 监视事务正常执行成功!测试多线程修改值,使用watch可以当做redis的乐观锁操作Watch 监视key监原创 2021-01-29 17:37:35 · 125 阅读 · 0 评论 -
Redis基本事务操作
Redis基本事务操作Redis事务本质:一组命令的集合!一个事务中的所有命令都会被序列化,在事务直线过程中,会按照顺序执行!Redis事务没有隔离级别的概念所有的命令在事务中,并没有直接被执行!只有发起执行命令的时候才会执行!ExecRedis单条命令式保存原子性的,但是事务不保证原子性!正常执行事务!redis的事务:开启事务(Multi)命令入队(…)执行事务(Exec)标记一个事务块的开始。 Multi执行所有事务块内的命令。 Exec 放弃事务开启事务原创 2021-01-29 15:31:50 · 112 阅读 · 0 评论 -
Redis Bitmap位图场景
Bitmaps位存储统计用户信息,活跃,不活跃!登录 ,未登录!打卡,365打卡! 两个状态的都可以使用Bitmaps。Bitmaps位图,数据结构!都是操作二进制位来进行记录,就只有0和1两个状态!365天 = 365bit 46个字节左右1.Setbit 对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。 Setbit KEY_NAME 值 状态(0或1)比如上班打卡 周一到周日原创 2021-01-28 19:50:42 · 151 阅读 · 0 评论 -
Redis Hyperloglog 基数统计
Hyperloglog 基数统计什么是基数?Redis Hyperloglog 基数统计的算法优点1.Pfadd 添加指定元素到 HyperLogLog 中。2.Pfcount 返回给定 HyperLogLog 的基数估算值。3.Pfcount 将多个 HyperLogLog 合并为一个 HyperLogLog总结什么是基数?A{1,3,5,7,8,7}B{1,3,5,7,8}基数(一个集合中不重复的元素)= 5Redis Hyperloglog 基数统计的算法网页的UV(一个人访问一个网站多原创 2021-01-28 19:38:38 · 167 阅读 · 0 评论 -
Redis Geospatial 地理位置 类型
Redis Geospatial 地理位置 类型1.geoadd 将指定的地理空间位置(经度、纬度、名称)添加到指定的key中2.geopos 从key里返回所有给定位置元素的位置(经度和纬度)3.geodist 返回两个给定位置之间的距离4.Geohash 返回一个或多个位置元素的 Geohash 表示5.Georadius 以给定的经纬度为中心, 找出某一半径内的元素6.Georadiusbymember 找出位于指定范围内的元素,中心点是由给定的位置元素决定进度纬度查询工具规则; 两极无法直接添加原创 2021-01-28 17:38:28 · 191 阅读 · 0 评论 -
Redis Zset有序集合
Redis Zset有序集合1.zadd 添加一个或多个值 并且区分SCORE2.zrange 返回有序集合区间3.zrangebyscore 通过分数score排名,从低到高4.Zrevrangebyscore通过分数score排名,从高到低5.Zrevrangebyscore通过分数score排名,从高到低6.zcard 计算zset有序集合中的个数7.Zrevrange 返回值 通过索引,分数从高到底8.Zrevrange 获取指定区间的成员数量总结使用1.zadd 添加一个或多个值 并且区分SCO原创 2021-01-28 17:00:14 · 295 阅读 · 0 评论 -
Redis Hash哈希类型
Redis Hash哈希类型1.hset 添加2.hget 获取3.hmset 添加多个值4.hmget 获取多个值5.hdel 删除指定的值6.hmget 获取哈希表中字段的数量7.hgetall 获取hash中所有的k v8.hexists 判断hash某个k是否存在9.hkeys 获取hash所有的K10.hvals 获取hash所有的v11.hincrby 指定增量 可以负增量12.hsetnx 判断存在就设置,判断不存在就无法设置,分布式锁总结redis所有的key都是字符串hash都是在r原创 2021-01-28 15:58:30 · 513 阅读 · 0 评论 -
Redis Set集合类型
Redis Set字符串类型1.sadd 添加2.sismember 判断(相当于javacontain)3.scard (获取set大小)4.srem 移除5.Srandmember 返回集合中一个或多个随机数6.spop 移除并返回集合中的一个随机元素7.smove 将 member 元素从 source 集合移动到 destination 集合8.sdiff 返回给定所有集合的差集9.sinter 返回给定所有集合的交集10.sunion 返回所有给定集合的并集无序不重复1.sadd 添原创 2021-01-28 15:30:00 · 136 阅读 · 0 评论 -
Redis List集合类型
Redis List字符串类型L 和 R 的意思是 left 和 right的意思,倒叙和正序添加移除PUSH插入 和 POP移除索引获取列表指定范围内的元素获取列表长度移除指定的值修剪移除列表的最后一个元素,并将该元素添加到另一个列表并返回通过索引设置列表元素的值在列表的元素前或者后插入元素中文官方API在redis里面,我们可以把list玩成,栈、队列、 阻塞队列!本质是链表L 和 R 的意思是 left 和 right的意思,倒叙和正序添加移除PUSH插入 和 POP移除LPUSH 将一原创 2021-01-26 20:37:38 · 152 阅读 · 0 评论