0


redis学习

Redis的由来
07年的时候 antirez 创建一个网站
antirez 09年的c语言 内存型的数据库 目的:解决我的性能问题
一、特性:
1.快:基础内存操作 所以我的操作是不需要跟磁盘进行交互,单次的执行会很快
2.命令执行是单线程 因为基于内存操作,单次的执行时间反而比你线程切换的时间快
3.Redis本身就是一个k-v结构 类似与hashMap 所有查询性能是接近o(1)
4.底层的数据结构 比如说跳表、sds(空间换时间)
5.网络模型 IO多路复用

二、高可用
1.很完善的内存管理机制 过期、淘汰、持久化
2.主从、sentinel、cluster集群

三、操作
1.启动命令 ./reids-cli 默认本机
2.flushall 没有做持久化相当于删库跑路

四、数据类型以及使用场景
1、String
a.基本的指令 set key value incr key 增加 incrby key 减少 加数字以数字计算
setnx 存在的话,设置成功
b.应用场景
缓存 token(过期时间)
mysql 查询mysql之前 看redis有没有 dcl 双重检索 duoble check lock 只有一个请求打到DB
单个查询 100ms之外 优化结构10ms(假如mysql优化不了)
incr 计数相关的场景都能做
分布式ID
点赞数 评论数
软限流
短信验证次数、库存
2、Hash
a.基本的指令 hset key key value hget key key hincrby key key
k k v
b.应用场景
1.缓存对象型的数据
2.统计型的数据
3.购物车 但是不会做 只是缓存 redis cap ap模型 优先保证可用 不会管数据丢失
3、List
a.基本的指令 lpush queue a lrange queue 0 -1 rpush 右边放 rpop 移除右边的元素
存储 有序的列表
b.应用场景
1.是不是所有的有序列表 都适合 时间线的
朋友圈
2.阻塞消息队列 (不要去做) 因为我们有完善MQ组件 rabbit、rocket ack机制 ap模型
4、Set
a.基本的指令 sadd key value value(多个value) smebers key
srandmember key 2 随机获取两个元素 spop key 删除一个元素
sdiff key key 两个set的差集
无序的集合(全部是整型的时候是有序) 元素是不可重复 查询效率是接近O(1)

b.应用场景
1.抽奖
2.集合类的场景 共同的好友
5、sortSet
有序的 不可重复 如果score相同,根据key来
a.基本的指令 zadd key value score 添加值 zrange z1 0 -1 获取所有值
zrevrange z1 0-1 反顺序获取元素
zrangebyscore z1 20 40 按分数范围获取元素
zscore a 60 给a元素加 60分

b.应用场景
1.排行榜

6.BitMap
001001001001001
指令: setibt key 5 1 添加元素 第五个位置的元素
bitcount key 统计元素
getbit key 获取元素
应用场景:
权限:101010

标签: redis 学习 java

本文转载自: https://blog.csdn.net/qq_33816292/article/details/126078571
版权归原作者 孰能生巧-LWP 所有, 如有侵权,请联系我们删除。

“redis学习”的评论:

还没有评论