一、事务相关
MULTI #开启事务
set aa 11 #插入数据
exec #结束事务
当执行DISCARD命令时,事务会被放弃,事务队列会被清空
二、命令
1、通用命令
rename a a1 #把键a重命名为a1(如果a1存在会覆盖a1)
renamex a a1 #把键a重命名为a1(如果a1存在则修改失败)
randomkey #随机返回一个键
dbsize #数据库键的数量
expire a 10 #键 a 在10秒过期
ttl #查看过期时间
pexpire a 100 # a 在100毫秒过期
persist a #清楚键的过期时间
move a db2 #把键a迁移到db2数据库上
dump hello #源端执行把键值序列化
restore hello +上面结果 #目标端导入数据
migrate 127.0.0.1 6380 hell0|cs 0 100 copy #把本地的hello cs键迁移到6380数据库上的0号库上100秒超时(copy不删除源端数据)
select 1 #切换到数据库 1 里面
flushdb #清理当前数据库
flushall #清理所有数据库
keys * #遍历所有 * 代表所有 [] 匹配部分字符(**很可能阻塞)
scan 0 #渐进式遍历所有
hscan 0 #遍历hase
sscan 0 #集合类型
zscan0 #遍历有序集合类型
2、字符串类型 get
set a 1 #插入 a 的值为 1
get a #获取 a 的值
setnx a 2 #如果 a 已经存在则插入失败
set a 2 xx #必须存在 a 键否则修改失败(后面加xx)
setex a 10 3 #设置 a 过 10秒过期
set a 3 px 1000 #设置 a 过 1000毫米过期
mset a 1 b 2 #批量设置 a b 的值(分片集群版用不了)
get a #获取a的值
mget a b #批量获取值 (分片集群版用不了)
incr a #给 a 自增 1
decr a #给 a 自减 1
incrby a 20 #给 a 增加 20
decrby a 10 #给 a 减少 10
incrbyfloat b 1.1 #给 b 增加 1.1
exists a #判断 a 是否存在
append a cs #给 a 后面的值后面追加cs字符串
strlen a #查看 a 值的字符串长度
getset a 1 #插入并返回a的值
setrange a 0 b #把 a 值的第一个字符修改为b
getrange a 0 1 #获取 a 值的前两个字符
3、hash类型
hset 键 字段
hset name a cs b 25 #插入 name1 字段的值 a是cs b是25
hdel name a #删除name1 里面a字段
hlen name #查看name里面字段的个数
hget name a #获取 a 的值
hmget name a b #获取 a b 的值
hkeys name #获取 name 下的所有字段(*危险如果元素个数多存在阻塞可能)
hvals name #获取 name 下的所有的value(*危险存在阻塞可能)
hgetall name #获取 name 下的所有的字段和 value的值(*危险存在阻塞可能)
hexists name a #判断 a 的值是否存在
hstrlen name a #获取 a 值的长度
hincrby name a 20 #给 a 的值增加20
hincrbyfloat name b 1.1 #给 b 的值增加 1.1 增加小数
4、list 列表类型
rpush cs a b c #从 cs 列表右(后)边插入数据
lpush cs 1 2 3 #从 cs 列表左(前)边插入数据
linsert cs before a 22 #在元素 a 的前面插入数据22
linsert cs after a 33 #在元素 a 的后面插入数据33
lpop cs #从cs列表左侧弹出元素
rpop cs #从cs右侧弹出元素
lrem cs 2 a #删除最左边的 2(把2改成负数是从右到左,改成 0 删除所有) 个 a
ltrim cs 0 10 #只保留前11个元素,其他的都删除
lrange 0 -1 #从左向右获取列表的所有数据(**数据量大慎用 0代表开始位置 -1是结束位置)
lindex cs 1 #获取索引下标是 1 的元素
llen cs #获取cs列表长度
lset cs 0 10 #把下标为0的元素的值修改成10
BRPOP cs:3 10 #从右侧弹出3个数据时等待10秒(0是永久等待)
lpush cs:1 a #跟下面的命令连用就是生产者和消费者 生产了a放放到cs:1的队列种
brpop cs:1 0 #消费者提前等待生产者生产
5、集合set类型
sadd test a b c #给 test 集合内添加 a、b、c 3个元素
srem test a #删除 test 集合内的 a 元素
scard test #计算 test 集合内的元素个数
sismember test a #判断 test 集合里面是否包含元素 a
srandmember test 5 #随机从 test 集合内取出5个元素
spop test 2 #随机从集合中删除2个元素
smembers test #查询test集合所有的元素(**元素过多会阻塞)
sinter test test1 #求集合 test 和 test1的交集(*集合较大会比较耗时)
sunion test test1 #求集合 test 和 test1的并集(*集合较大会比较耗时)
sdiff test test1 #求集合 test 和 test1的差集(*集合较大会比较耗时)
sinterstore test0_1 test test1 #将集合test和test1的交集保存在test0_1中
sunionstore test0_1 test test1 #将集合test和test1的并集保存在test0_1中
sdiffstore test0_1 test test1 #将集合test和test1的差集保存在test0_1中
6、有序集合
zadd user 210 cheng 220 shuai #添加成员 cheng 和 shuai 用于排序的分数分别是210和220
zcard user #计算user集合下的成员个数
zscore user cheng #计算 cheng 成员的分数
zrank user cheng #计算 cheng 成员的排名(从左到右 正序)
zrevrank user cheng #计算 cheng 成员的排名(从右到左 倒叙)
zrem user cheng #删除 cheng 成员
zremrangebyscore user 0 50 #删除 0 到 50 分数
zincrby user 10 che #给 cheng 成员的分数加10
zcount user 0 100 #查询 0 到 100 分数的成员个数
zrange user 0 3 #查询 0 到 3 排名的成员
zrevrange user 0 3 #查询 3 到 0 排名的成员(倒序)
zrange user 0 2 withscores #查询 0 到 2 排名的成员并显示分数
zrangebyscore user 0 200 #查询0 到 200 分数的成员
zrangebyscore user 0 200 withscores #查询0 到 200 分数的成员并显示分数
zrevrangebyscore user 200 0 #查询0 到 200 分数(倒序)
zremrangebyscore user 0 50 #删除 0 到 50 分数之间的成员
ZINTERSTORE user_0_1 2 user user1 #求 user 和 user1 两个集合的交集保存到user_0_1里面
zunionstore user_0_1 2 user user1 #求 user 和 user1 两个集合的并集