Reids
reids 是单线程的:
是指 reids的网络IO和键值对读写,是由一个线程完成的
其他功能: 持久化、异步删除、集群数据同步、都是有由额外的线程完成
5种基本数据类型
类型 | 结构存储 | 结构读写能力 |
---|---|---|
String | 字符串、整数、浮点数 | 字符串整体,或部分操作; 整数,浮点数自增加,自减 |
list | 链表,每个节点上都有一个 字符串 | 链表的两端进行push,pop操作,读取单个或多个元素;根据值查找或删除元素 |
set | 包含字符串的无序集合 | 字符串的集合,包含基础的方法,有看是否存在添加、获取、删除; 还包含计算交集、并集、差集等 |
hash | key-value | 添加,获取,删除单个元素 |
zset | key-value | 字符串与浮点数分数之间的有序映射; 元素排列顺序由分数大小决定 方法添加,获取,删除单个元素,以及根据分值范围或成员来获取元素 |
常用指令/通用指令
指令 | 描述 | 使用 |
---|---|---|
keys * | 查询所有key | |
exists | 判断可以是否存在 | EXISTS keyName |
move | 删除key | MOVE keyName |
type | 查看key类型 | TYPE keyName |
expire | 设置过期时间 | EXPIRE name 10 |
ttl | 查看剩余时间 | TTL name |
select | 切换数据库 | select index |
flushdb | 清空当前数据库 | |
flushall | 清空所有数据库 |
String 字符串
String 时二进制安全的
redis的String 可以包含任意数据。数字,字符串,jpg图片或序列化对象
spring session + redis 实现 sessino 共享
键名 类型 值
my string lf
命令 | 作用 | 使用 |
---|---|---|
get | 获取存储在给定键中的值 | GET name |
set | 设置存储在给定键中的值 | SET name vale |
del | 删除存储在给定键中的值 | DEL name |
incr | 将键储存值 +1 | INCR key |
decr | 将键存储值 -1 | DECR key |
incrby | 将键存储的值加上 整数 | INCRBY key amount |
decrby | 将键存储的值减去 整数 | DECRBY key amount |
mset | 添加多个值 | MSET key1 value1 [key2 value2] |
strlen | 获取长度 | STRLEN key |
append | 追加内容,没有指定key就新键 | APPEND key value |
setex | 添加 value 设置 value过期时间 | SETEX key seconds value |
list 列表
redis 的list 时双端链表
list可以作为消息队列来使用 push添加,pop取出
键名 类型 元素(可重复)
list-key list my1
my-key my1
my-key my2
命令 | 简述 | 使用 |
---|---|---|
rpush | 将值推入列表右端 | RPUSH key value |
lpush | 将制定值推入列表左端 | LPUSH key |
rpop | 从列表的右端弹出一个值,并返回弹出值 | RPOP key |
lpop | 从列表左边弹出一个值,并返回弹出值 | LPOP key |
lrange | 获取列表在给定范围上的所有值 | LRANGE key 0 -1 |
lindex | 通过索引获取,列表中的元素。也可使用负数下表。 -1标识列表最后一个元素,-2标识列表倒数第二个 | LINEX key index |
llen | 获取list长度 | LLEN key |
lrem | 删除key中 指定个。value | LREM key conut value |
blpop | 获取并移除最左边的元素,没有就等待 秒 | BLPOP key timeout |
brpop | 获取并移除最右边的元素,如果没有就等待 秒 | BRPOP key timeout |
Set 集合
redis 的set是 string 类型的无序集合。集合成员唯一
使用场景: 给用户添加标签,点赞,点踩,收藏
键名(无序) 类型 元素
set-key set user
命令 | 描述 | 使用 |
---|---|---|
sadd | 添加一个或多个成员 | SADD key value1 v2 v3 |
scard | 获取集合成员数 | SCARD key |
smembers | 返回集合中的所有成员 | SMEMBER kye member |
sismember | 判断member 元素是否是集合key的成员 | SISMEMBER key member |
srem | 移除 | SREM key member1 […] |
scard | 获取长度 | SCARD key |
spop | 获取key 中随机指定数量的元素 删除 | spop key |
sinter | 交集 | SINTER key1 key2 |
sunion | 并集 | SUNION key1 key2 |
sdiff | 差集 | SDIFF key1 key2 |
#获取key1和key2的交集并存储到key3
sinterstore key3 key1 key2
#获取key1和key2的并集并存储到key3
sunionstore key3 key1 key2
#获取key1和key2的差集并存储到key3
sdiffstore key3 key1 key2
hash 散列表
reids 的hash 是一个 string 类型的 field ,和value 的映射,hash比较适合存储对象
存储对象,维护用户信息
键名 值类型
hash-key hash
命令 | 简述 | 使用 |
---|---|---|
hset | 添加键值对 | HSET hash-key sub-key1 value1 |
hget | 获取制定散列键的值 | HGET hash-key key1 |
hgetall | 获取散列中包含的所有键值对 | HGETALL hash-key |
hdel | 如果给定键存在于散列中,那么就移除这个键 | HDEL hash-key sub-key1 |
hlen | 获取指定key 中的所有 sub 个数 | HLEN key |
hexists | 判断 key 中 sub 是否存在 | HEXISTS key sub |
hkeys | 获取所有的sub | HEKYS key |
hvals | 获取所有的 value | HVALS key |
hincrby | 正数加。负数减少 | HINCRBY key sub num |
Zset 有序集合
redis 有序集合集合一样也是String 类型元素的集合,且不允许重复成员,每个成员都会关联一个double 类型的分数,redis正式通过果类来为集合中的成员进行从小到大的排序
键名 值类型 元素
zset-key zset 成员user 1,user2 根据关联的分值进行排序
命令 | 简述 | 使用 |
---|---|---|
zadd | 将一个带有给定分值的成员添加到有序集合里面 | ZADD zset-key 178 member1 |
zrange | 根据元素在有序集合中所处的位置,从有序集合中获取多个元素 | ZRANGE zset 0-1 withccores |
zrem | 如果给定元素成员存在与有序集合中,那么就移除这个元素 | ZREM zset-key member1 |
zrangebyscore | 从小到大获取 范围内的元素 wihthscores: 是否携带 score limit off count: 截取 off个开始 到count 结束 | ZRANGEBYSCORE key min max [wihthscores] [limie] |
zrevrangebyscore | 从大到小 | |
zincrby | 给指定key 到score 值加值 | ZINCRBY key increment value |
zcount | 统计 min -max之间的个数 | ZCOUNT key min max |