redis
redis 简介
- redis 是采用 ASNI C 语言编写的
- 采用的是 C/S 架构
- 是非关系型数据库
- 以键值对的形式存储在内存中
redis 在 windows 中的启动命令
redis-server redis.windows.conf
redis-cli
切换到客户端
一、redis 的数据类型
1. String(字符串)
最基本的数据结构,可以存储文本、整数或二进制数据。
1.1 设置键值对,根据键获取值
set key value # 设置键值对
get key # 根据键获取值
1.2 只能设置唯一的键和值
setnx key value
不能再设置这个键的值- 如果需要重新设置值,就需要先把 key 删除了
del key
分布式锁用的就是 setnx key value
假如要抢购一个商品,通过使用 setnx
设置唯一的键让这个单线程使用,只有删除了这个键其他线程才能创建使用
当使用 del
删除 key
则使用 setnx key value
就可以创建新的键值对
1.3 设置有效时间
setex key seconds value
1.4 比特流
setbit key offset value # offset从左到右设置一个bit数据的偏移量
getbit key
bitcount key # 统计字符串被设置为1的数
bitpos # 返回字符串里第一个被设置为1或0的bit位
1.5 字符串数字增加减少
incr key
值增加 1decr key
值减少 1
1.6 增加减少数量
incrby key increament
一次增加的数量decrby key increament
一次减少的数量
1.7 获得字符串值的长度
strlen key
1.8 字符串拼接
append key value
- 如果需要拼接空格,值用引号
2. list(列表)
2.1 增
- 从列表最左边添加
lpush key value1 value2 ...
- 总列表最右边添加
rpush key value1 value2 ...
lpushx key value1 value2 ...
与rpushx key value1 value2 ...
只会在已经存在的 key 中插入值
- 在列表指定字段之前插入数据
linsert key before field value
- 在列表指定字段之后插入数据
linsert key after field value
2.2 删
-
从列表最左边删除
rpop key
-
从列表最右边删除
rpop key
-
删除指定重复的元素
lrem key count value
count为0
删除所有的value
count > 0
count 为几则从表的左边往右删除几个重复的value
-
count < 0
count 为负几则从表的右边往左删除几个重复的value
2.3 查
- 查询列列表长度
len key
- 根据索引获取值
lindex key 索引
2.4 改
- 指定索引修改值
lset key index
2.5 设置列表上限
ltrim key start stop
设置范围,将范围之外的旧内容删除
2.6 阻塞命令
blpop key [key...] timeout
从列表头部删除并返回一个元素,如果列表为空,则该命令阻塞,直到有元素可用或者达到指定时间为止blmove
3. hash(哈希)
相当于 python 中的字典嵌套了一个字典
dct = {
key1:value1,
key2:{
key3:value3,
key4:value4
}
}
3.1 增
- 新增哈希值
hset key field1 value1 field2 value2 ...
- 增加
key
中哈希的多个键值对:hmset key field1 value1 field2 value2 ...
3.2 查
- 查看字段中一个键的值
hget key field
- 查看
key
中的哈希field
是否存在:hexists key filed
- 查看
key
中所有哈希的键值对:hgetall key
- 查看
key
中哈希所有的field
:hkeys key
- 查看
key
中哈希的键值对长度:hlen key
- 查看
key
中哈希的多个field
对应的value
:hmget key field1 field2 ...
3.3 删
- 删除一个或多个字段
hdel key field1 field2 ...
3.4 设置数字的增加减少
- 设置
key
中的field
字段对应的value
的增加大小:hincrby key field increment
value和increment
其中为increment
正数为一次增加多少,为负数为一次减少多少
- 设置小数增加减少多少:
hincrby key field increment
value和increment
可以设置float
的增加或减少
3.5 hsetnxn
- 如果
field
不存在则会创建一个新的field value
,如果field
已存在则该操作无效 hsetnx key field value
- integer = 1 :表示
field
是新字段并设置了value
- integer = 0 :表示
field
已存在或者没有执行任何操作
3.6 hstrlen
- 查看
field
对应的value
的字符串的长度:hstrlen key field
3.7 hvals
- 查看
key
中所有的field
对应的value
:hvals key field
4. set(集合)
4.1 sadd 增
- 增加
key
的集合:asdd myset member...
4.2 scard 查(count)
- 查看集合的个数:
scard key
4.3 sdiff 差集
- 取多个集合的不同的差集:
sdiff key1 key2 ...
- 也就是
key1
有的值key2
没有
4.4 sdiffstore 差集(存)
- 将 diff 取到的差集存储起来
sdiffstore destination key1 key2...
- 取到的差集存储到
destiantion
中,destinnation
自己设置key
,如果已经存在key
则会之间替代 smember key
查看存储的值
4.5 sinter 交集
- 取多个集合的交集:
sinter key1 key2 ...
4.6 sinterstore 交集(存)
- 将取到多个集合的交集存储到
destination
中:sinterstore
- 如果已经存在
key
则会覆盖原有的内容
4.7 sismember 判断
- 判断
key
中是否有member
这个成员:sismember key member
- 如果有则返回 1,否则返回 0
4.8 smembers 查(all members)
- 查看
key
中的所有member
成员:smembers key
4.9 smove 移
- 将集合中的某个元素移动到另一个集合中
smove soure destination member
soure
是原来的集合destination
是要移动到的集合member
是要移动的成员元素
4.10 spop 删
- 随机删除一个或多个成员元素:
spop key count
4.11 srandmember 随机
srandmember key count
- 当没有添加
count
则只会返回一个随机成员元素 - 当
count
为正数时,返回不同的成员元素。返回的个数是count
- 当
count
为负数时,返回的可以是重复的成员元素。返回的个数是count
的绝对值
4.12 srem 删
- 删除指定的成员元素:
srem key member1 member2 ...
4.12 sunion 并集
- 求多个集合的并集
sunion key1 key2 ...
5. sorted set(有序集合)
5.1 zadd 增
- 将新成员和关联分数添加到排序集中,如果该成员已经存在则更新数据:
ZADD key score1 member1 [score2 member2...]
5.2 zcard (count)
- 统计 zset 中成员的个数:
zcard key
5.3 zcount 区间(count)
- 查看分数区间的成员个数:
zcount key min max
min max
:是分数区间
5.3 zincrby (自增 score)
- 让某个成员元素的分数增加
increment
:zincrby key increment member
increment
: 指的是分数增加多少
5.4 zlexcount 指定范围(count)
- 所有的分数都相同时,指定字典区间内成员的数量
zlexcount key min max
5.5 zpopmax 删(score max)
- 删除有序集合中分数最高的成员元素个数:
zpopmax key count
5.6 zpopmin 删(score min)
- 删除有序集合中分数最低的成员元素个数:
zpopmin key count
5.7 获取 score 在指定区间的所有成员
- 按
score
从低往高排序获取指定score
区间:zrangebyscore key min max
- 按
score
从高往低排序获取指定score
区间:zrerangebyscore key min max
- 按
score
从低往高排序获取指定索引区间:zrange key start stop
- 按
score
从高往低排序获取指定索引区间:zrev range key start stop
5.8 zscore
- 获取指定成员的分数:
zscore key member
5.9 zrank
- 获取指定成员在集合中的排名:
zrank key member
,从小到大zrevrank key member
,从大到小
5.10 zrem 删
- 删除成员:
zrem key member1 member2 ...