
redis 笔记一(基础知识)
Redis应用
缓存、 计数器、 排行榜、 社交网络、 消息队列、 分布式锁
计数器 Redis天然支持计数功能,而且计数性能非常好,可以用来记录浏览量、点赞量等等。
排行榜 Redis提供了列表和有序集合数据结构,合理地使用这些数据结构可以很方便地构建各种排行榜系统。
社交网络 赞/踩、粉丝、共同好友/喜好、推送、下拉刷新。
消息队列 Redis提供了发布订阅功能和阻塞队列的功能,可以满足一般消息队列功能。
分布式锁 分布式环境下,利用Redis实现分布式锁,也是Redis常见的应用。
数据结构介绍
基本类型: string hash list set sortedSet
特殊类型: GEO BitMap HyperLog
redis 通用命令
keys -- 查看那符合模板的所有key , 通配符 *
del -- 删除指定的key ,
mset -- 批量插入
exists -- 判断key 是否存在 1, 0
expire -- 设置到期时间,到期时key 被自动删除 expire second
ttl -- 查看一个key 的剩余有效期,-1 永久有效 -2 被删除
查看帮助
help @ 查看分组类型命令帮助
help 查看命令帮助
String 类型
redis 中最简单的数据类型
set -- 新增或者修改, 存在修改 不存在则新增
get -- 获取对应值
mset -- 批量新增
mget -- 批量获取
incr -- 让一个key 自增1
incrby -- 让一个整型 key 自增并指定步长, 负数 自减
incrbyfloat -- 让一个浮点型的数字自增指定步长
setnx -- 添加一个string 类型的键值对,不存在添加 存在不新增
setex -- 添加一个string 类型键值对,并指定有效期
思考
redis 的key 允许有多个单词形成层级结构, 多个单词之间使用":" 隔开
java 对象可以序列化成字符串存储
Hash 类型
value 值为一个无序字典。 类似java中的 hashMap
可以将每个字段独立存储,可以针对单个字段做 crud
hset key field value -- 添加或者修改 hash类型key的field的值
hget key field -- 查看/获取对应的值
hmset key -- 存储多组值
hmget key -- 查看多组值
hgetall -- 获取查看所有的值
hkeys -- 获取一个key中所有的field
hvals -- 获取一个key中所有的值
hincrby -- 让一个hash 类型的字段增长, 负数自减
hsetnx -- 添加一个hash 类型的key 的field 新增, 不存在则新增
List 类型
有序 元素可以重复 插入和删除快 查询速度一般
lpush key element -- 队首插入一个货多个元素
lpop key count -- 队首移除并返回n个元素
rpush -- 队尾
rpop -- 队尾
lrange key star end -- 返回一段角标范围内的元素
blpop/brpop key timeout -- 没有元素时等待指定时间,而不是直接返回null
如何模拟一个栈,模拟一个队列,模拟一个阻塞队列
Set类型
无序 元素不可重复 查找块 支持交集、并集、差集等功能
sadd key meber -- 向set 中添加一个或多个元素
srem -- 移除set中指定的元素
scrad -- 返回set中元素的个数
sidmember key member -- 判断是否存在某个元素
smembers -- 获取所有元素
sinter key1 key2 -- 求 key1 与 key2 交集
sdiff -- 求 差集
sunion -- 求 并集
SortedSet类型
可排序 、元素不重复、查询速度快、 底层一个跳表 一个hash表
zadd key sore member -- 添加
zrem key member -- 删除
zscore -- 获取指定元素的分数
zrank/zrevrank -- 获取排名 , rev 降序
zcard -- 获取所有元素个数
zcount key min max -- 统计在一定范围内的元素
zincrby key increment member -- 让socrted set 指定元素自增,步长指定
zrange -- 按照socre 排序后,获取指定排名范围内的元素
zrangebyscore -- 按照score 排序后 获取指定 score 范围内的元素
zdiff zinter zunion -- 求差集、交集、并集