redis
LUK流
大数据/java web
展开
-
Redis分布式锁:单机Redis实现分布式锁、Redission可重入锁、Redission红锁机制(解决分布式redis单点宕机故障转移存在的遗留问题)
1.单机redis的分布式锁关于代码的详细解释见代码注释。单机redis详细解释:https://juejin.im/post/5b737b9b518825613d3894f4public class RedisTool { private static final String LOCK_SUCCESS = "OK"; private static final Strin...原创 2020-01-12 19:39:12 · 5311 阅读 · 0 评论 -
redis事务和redis分布式锁(悲观锁和乐观锁)
1.redis事务-mutil/execredis中mutil是事务的开始,exec是事务的结束127.0.0.1:6379> MULTIOK127.0.0.1:6379> set hello 1QUEUED127.0.0.1:6379> set hello 2QUEUED127.0.0.1:6379> set hello 3QUEUED127.0.0....原创 2019-09-18 15:22:07 · 2677 阅读 · 0 评论 -
配置redis cluster,springboot远程连接linux上的redis cluster
程序报错:org.springframework.data.redis.RedisConnectionFailureException: No reachable node in cluster; nested exception is redis.clients.jedis.exceptions.JedisNoReachableClusterNodeException: No reachabl...原创 2019-12-04 18:03:50 · 888 阅读 · 0 评论 -
redis cluster槽迁移
1.准备一个脚本shell脚本:(1)前两个槽表示槽的范围:起始的槽,结束的槽(2)第三个表示端口号(本次实验在同一机器的不同端口启动多个redis来模拟redis cluster集群)start=$1end=$2port=$3for slot in `seq ${start} ${end}`do echo "slot:${slot}" redis-cli -p ${por...原创 2019-12-03 14:53:41 · 1918 阅读 · 0 评论 -
redis(十二):redis缓存的置换算法、过期策略、缓存击穿等问题
1.缓存更新策略(1)LRU:最近最久未被使用的页面置换出去(LinkedHashMap就是对LRU的实现)下面借用了图来说明LRU的整个页面置换过程:https://blog.csdn.net/u013700358/article/details/85873397如图是按照70120304的顺序加入栈中的数据。(2)LFU:最近最少使用的页面置换出去(3)FIFO:最先进入的页面有限...原创 2019-09-30 18:11:40 · 1112 阅读 · 0 评论 -
redis(十一):redis cluster[2]
1.集群的扩容就是集群的节点的上线和下线,因为槽和数据一一对应,又新节点的加入必定导致槽的变化,故数据也会产生迁移。(1)先启动两个新的节点 6385和6386,但这两个节点还没有加入集群(2)meet(3)redis-trib命令来新加入一个节点和meet操作(4)迁移槽的命令(5)迁移槽的流程图2.集群的收缩(1)下线槽(2)忘记节点(60s内如果与节点A关联的...原创 2019-09-27 22:56:17 · 211 阅读 · 0 评论 -
redis(十一):redis cluster[1]
1.hash取余增加一个节点,数据迁移量接近百分之80多倍扩容减少数据迁移量(也就是node增加数量直接增加1倍或多倍)2.一致性hash我们做一个token环,n1到n4一共4个节点平均管理这2的32次方个token。增加一个节点5,n1,n3,n4不会受到影响,只有n2上的数据才会被部分受到影响。特别别是当节点有1000个节点时,收到的节点小于1000分之1.缺点:这种做法...原创 2019-09-25 21:50:54 · 172 阅读 · 0 评论 -
redis(十):redis Sentinel
1.主从复制的问题原创 2019-09-19 15:51:15 · 187 阅读 · 0 评论 -
redis(九):redis主从复制
1. 主从复制模型从节点会复制主节点的内容。防止主节点宕机了,从节点可以生效。主节点set hello,从节点中可以get hello获取值。通过slaveof命令可以让某个节点成为从节点。同样的,使用slaveof no one可以取消成为从节点。2.全量复制runid:服务器的唯一标识offset:数据的偏移量,从节点定期向主节点汇报偏移量,主节点以此判断主从节点的数据是...原创 2019-09-19 11:56:48 · 145 阅读 · 0 评论 -
redis(八):redis持久化AOF和RDB
1.两种持久化方式2. RDBRDB是使用二进制文件生成文件的快照,保存到磁盘中。三种触发RDB的方式:save(同步):等生成快照成功在执行其他命令。会造成阻塞redisbgsave(异步):执行完成以后返回"ok",然后开启一个单独线程生成快照。如果开启子进程的时间阻塞会较慢,一般fork子进程都很快。自动:达到某个条件以后自动生成RDB文件。下面是一个rdb的配置,第一行表示9...原创 2019-09-19 11:14:18 · 89 阅读 · 0 评论 -
redis(七):redis的一些特殊功能-慢查询、订阅发布、位图、hyperloglog、GEO
1. 慢查询如图,这是客户端请求服务器端的一个生命周期。慢查询是指,查询命令的执行时间较慢,超过了设定好的阈值(系统默认10s)。像我们使用的keys *命令就很有可能导致慢查询。慢查询队列的两个参数:slowlog-log-slower-than:表示队列的阈值,单位微妙slowlog-max-len:表示慢查询队列的长度慢查询命令2. 发布订阅模型开启一个窗口订阅alib...原创 2019-09-19 10:20:59 · 102 阅读 · 0 评论 -
redis(六):redis的zset(有序集合)
1.zset的结构相比于set,zset中会有一个score属性,用于set的排名。2.zset的操作zadd:向zset中添加元素(sorce value)zrem:删除elementzscore :获取scorezincrby :增加scorezrange :获取数据,start到endzrank:通过下标获取排名127.0.0.1:6379> zadd key1 1...原创 2019-09-18 17:48:21 · 190 阅读 · 0 评论 -
redis(五):redis的set
1.set的操作sadd增加元素srem删除元素scard 求set的长度sismember查询某一元素是否存在与set中127.0.0.1:6379> sadd key1 a(integer) 1127.0.0.1:6379> srem key1 b(integer) 0127.0.0.1:6379> sadd key1 a b c d e f g(inte...原创 2019-09-18 17:26:31 · 141 阅读 · 0 评论 -
redis(四):redis的list
1.集合的操作rpush:从在右边开始插入lpsuh:左边开始增加linesert:在某个value之前/之后插入新的valuelrange:从左到右列出所有的value,范围是start到end(end为-1表示最后一个数据)127.0.0.1:6379> lpush key1 value1(integer) 1127.0.0.1:6379> rpush key1 va...原创 2019-09-18 17:13:07 · 195 阅读 · 0 评论 -
redis(三):redis的hash
1.hash操作尽量少使用夏敏的命令,数据太大,执行太慢。hmset给某个key设置一个maphgetall:获取某个map的所有key和valuehvals:获取某个map的所有valuehkeys:获取某个map的所有key127.0.0.1:6379> hmset test key1 value1 key2 value2 key3 value3 key4 value3OK...原创 2019-09-18 16:30:48 · 111 阅读 · 0 评论 -
redis(二):redis的String
1 .String–内部构造对于String类型的value:1.可以存放整数类型,在操作的过程中redis会自动做出类型转化。2.redis中的位图也是使用字符串实现的3.value可以是用json串存放一个对象2.String–操作get,set,del三种操作。详情见: https://blog.csdn.net/qq_35688140/article/details/100...原创 2019-09-18 16:13:20 · 101 阅读 · 0 评论 -
redis(一):redis的特性,常用命令,内部结构
1.redis的特性(1)速度快:主要是依赖内存的高速度(2)可以持久化:AOF和RDB(3)多种数据结构:(4)支持高可用和分布式:在redis2.8支持sentinal和在redis3.0以后就cluster支持分布式2.redis的返回值(1)状态回复:ping -> pong(2)错误回复:hget hello world -> [ERROR](3)整数回复:i...原创 2019-09-18 14:48:17 · 214 阅读 · 0 评论 -
redis分布式锁的应用和zookeeper分布式锁的应用
利用SETNX+EXPIRE实现分布式锁。SETNX:如果key不存在,那么就新增一个<key,value>,如果key存在,则不做任何操作。EXPIRE:为了防止网络拥塞,A拿到锁以后迟迟无法释放,故设置超时时间。防止B一直等待该key,A迟迟无法释放而出现死锁。思路:1.给userId+itemId形成的组合key设置一个value,设置成功就设置一个超时时间。2.如果设...原创 2019-09-17 15:04:34 · 243 阅读 · 0 评论 -
LRU在redis中的应用
1.LRU在操作系统中,考虑到内存有限,需要将已经使用过的空间置换出来,LRU就是一个页面置换算法,淘汰掉不经常使用的页面。下面事LRU的置换过程,使用的是FIFO。2.基于 HashMap 和 双向链表实现 LRU下面展示了,预设大小是 3 的,LRU存储的在存储和访问过程中的变化。为了简化图复杂度,图中没有展示 HashMap部分的变化,仅仅演示了上图 LRU 双向链表的变化。我们...转载 2019-07-02 17:43:15 · 327 阅读 · 3 评论