Redis
Forest24
keep learning...
展开
-
Redis学习笔记--SortedSet
SortedSet:按照分值排序的setzadd k1 3 apple 7 banana 9 orange:添加元素及分值zrange 0 -1 withscores:按索引取出zrangebyscore k1 3 7:按分值取出zscore k1 apple:根据元素取分值zrank k1 apple:根据元素取排名zincrby k1 apple 5:元素apple分值加5...原创 2021-11-26 09:21:32 · 366 阅读 · 0 评论 -
Redis学习笔记--set
特征:无序,去重sadd k1 a b a c d a e f:添加元素smembers k1:查看。a会被去重操作srem k1 d:删除k1中的dsadd k2 1 2 3 4 5sadd k3 4 5 6 7 8sinter k2 k3:取k2 k3交集的结果,即4 5sinterstore result k2 k3:取k2 k3交集的结果放入key result中sunion k2 k3:取k2 k3并集的结果,即1 2 3 4 5 6 7 8sunionstor原创 2021-11-22 22:39:10 · 359 阅读 · 0 评论 -
Redis学习笔记--hash
类似于集合中的Maphset tom name tom:存key为tom的name为tomhmset tom age 18 address shanghai:批量存key为tom的age addresshget tom name:取key为tom的namehmget tom name age:批量取key为tom的name agehkeys tom:key为tom的所有字段hincrbyfloat tom age 0.5:key为tom的age加0.5...原创 2021-11-22 22:07:16 · 351 阅读 · 0 评论 -
Redis学习笔记--list
list原创 2021-11-19 21:52:39 · 583 阅读 · 0 评论 -
Redis学习笔记--string、bitmap
String字符串:set k1 keyName nx:只有keyName不存在的时候才能设置成功,可实现分布式锁。set k1 keyName xx:只有keyName存在的时候才能设置成功,即更新操作。mset k1 a k2 bmget k1 k2批量set和get。append k1 "hello":将"hello"追加到k1字符串的后面。getrange k1 3 4:取k1的第4个到第五个字符。getrange k1 3 -1:取k1的第4个到最后一个字符,利用.原创 2021-11-09 22:27:51 · 798 阅读 · 0 评论 -
分布式锁之(RedLock)红锁
需要锁的条件:多任务环境下。(进程,线程) 任务都对同一共享资源进行写操作。 对资源的访问是互斥的。操作周期:竞争锁。获取锁后才能对资源进行操作。 占有锁。操作中。 其他竞争者,任务阻塞。 占有锁者,释放锁。继续从1开始。JVM 锁 解决不了分布式环境中的加锁问题。手写Redis锁:redis:内存存储的数据结构服务器,内存数据库。可用于:数据库,高速缓存,消息队列。...原创 2020-05-02 11:42:00 · 8819 阅读 · 2 评论 -
Redis击穿、穿透、雪崩
1.击穿: 概念:redis作为缓存,设置了key的过期时间,key在过期的时候刚好出现并发访问,直接击穿redis,访问数据库。 解决方案:使用setnx() ->相当于一把锁,设置的时候,发现设置过期,加锁,只有获得锁的请求才可以访问DB,这样就能防止击穿。 question1:如果第一个加锁的请求挂了? 可以设置过期时间。 question2:如果第一个加锁的请...原创 2020-04-12 22:02:49 · 177 阅读 · 0 评论 -
Redis集群--主从复制
1.单节点、单实例面临的问题:单点故障,容量有限,压力。解决:1.进行读写分离。2.基于三维进行扩展AKF。- X轴进行全量镜像的节点复制(从单库到多库)- Y轴进行业务功能分离(根据业务逻辑再次进行分库)- Z轴进行优先级逻辑再拆分(单业务进行分片,如MR的DataNode,单业务进行分节点运算)2.进行集群化面临的几个问题1.强一致性,破坏可用性分量数据不...原创 2020-04-12 16:37:08 · 185 阅读 · 0 评论 -
Redis 持久化之RDB和AOF
Redis 有两种持久化方案,RDB (Redis DataBase)和 AOF (Append Only File)。1.RDBRDB 是 Redis 默认的持久化方案。在指定的时间间隔内,执行指定次数的写操作,则会将内存中的数据写入到磁盘中。即在指定目录下生成一个dump.rdb文件。Redis 重启会通过加载dump.rdb文件恢复数据。配置:redis.conf 文件,找...原创 2020-04-06 11:57:50 · 118 阅读 · 0 评论 -
Redis的key的有效期
可以在创建的时候设置:set k1 数据ex 60 (60s后过期)也可以额外设置:expire k1 60可以使用ttl k1查看剩余时间有效期会随着key被访问而延长?不对!如果在k1上发生了写操作,则会剔除过期时间。固定时间过期:expireat k1 时间戳Keys的过期时间通常Redis keys创建时没有设置相关过期时间。他们会一直存在,除非使...原创 2020-04-02 17:09:16 · 628 阅读 · 0 评论 -
Redis模块--布隆过滤器
解决缓存穿透。在redis.io/modules选择redisbloom的github,克隆下来解压,make编译,将redisbloom.so这个链接库复制到/opt/redis执行redis-server --loadmodule /opt/redis/redisbloom.so使用:1.数据库数据跑布隆过滤器算法 BF.ADD2.未来客户端请求时直接用BF.EXI...原创 2020-03-31 22:27:32 · 178 阅读 · 1 评论 -
Redis 事务
multi 开启事务exec 执行事务watch某个键, 若数据被更改,则不执行事务discard 放弃事务多个客户端对同一个redis事务的操作,因为redis是单进程的,所以谁的exec命令先到达,先执行谁的事务操作。...原创 2019-10-29 16:57:15 · 100 阅读 · 0 评论 -
Redis 发布订阅(Pub/Sub)
publish channel hello向通道名为channel的通道推送一个hellosubscribe channel订阅通道名为channel的通道此时收不到“hello”这条消息,因为只有先订阅后,才能收到。...原创 2019-10-29 16:36:31 · 89 阅读 · 0 评论 -
Redis 管道(Pipelining)
一次可以将多个命令发送到服务器,而不用等待回复,最后在一个步骤中读取该答复。节省往返时间RTT (Round Trip Time - 往返时间)。1.安装nc :yum install nc -y2.通过nc连接redis :nc localhost 63793.通过echo向nc发送指令 :echo -e "set k1 99\nincr k1\n get k1" |nc l...原创 2019-10-29 16:29:34 · 125 阅读 · 0 评论