信息添加
set key value
信息查询
如果不存在,返回空(nil)
get key
清屏
clear
帮助
获取帮助文档,获取组中所有命令信息名称
help 命令名
help @组名
key操作:
keys *查看当前库所有key
exists key 判断某个key是否存在
type key 查看你的key是什么类型
del key 删除指定的key数据
unlink key 根据value选择非阻塞删除
expire key 10 10秒:给指定的key设置过期时间
ttl key 查看还有多少秒过期 -1表示永不过期,-2表示已过期
select 命令切换数据库
dbsize 查询当前数据可的key的数量
flushdb 清空当前库
flushall 通杀全部库
数据类型
string:
string类型是二进制安全的。意味着redis的string可以包含任何数据,比如jpg图片或者序列化的对象
一个redis中字符串value最多可以是512m
数据添加
set key value
获取修改数据
get key
删除数据
del key
添加修改多个数据
mset key1 value1 key2 value2....
获取多个数据
mget key1 key2...
获取数据字符个数(字符串长度)
strlen key
只有在key不存在时 设置key的值
setnx key value
同时设置一个或多个key-value对,当且仅当所有给定key都不存在
msetnx key1 value1 key2 value2....
追加信息到原值尾部(如果原值在就追加,否则新建)
append key value
设置数值增加指定范围的值<指定正负都可以>
incr key
incrby key increment
incrbyfloat key increment
设置数值减少指定范围的值
decr key
decrby key increment
设置数据具有指定的生命周期
setex key 秒 value
psetex key 毫秒 value
获取值的范围
getrange key 起始位置 结束位置<索引从0开始,-1显示全部>
指定的范围设置值
setrange key 起始位置 value
以新换旧值,设置了新值同时获得了旧值
getset key value
key的设置约定
数据库中的热点数据key命名惯例
表名:主键名:主键值:字段名 value
hash:
键 字段 值
添加修改数据
hset key 字段 value
获取修改数据
hget key field
hgetall key(返回全部数据)
删除数据
hdel key field
添加修改多个数据
hmset key field1 value1 field2 value2....
获取多个数据
hmget key field1 field2.....
获取字段的数量
hlen key
获取表中是否存在指定的字段
hexists key field
获取哈希表表中所有的字段名或字段值
hkeys key
hvals key
设置指定字段的数据增加指定范围的值
hincrby key field increment
hincrbyfloat key field increment
list:
添加修改数据
lpush key value1 value2...
rpush key value1 value2...
获取数据
lrange key start[起始索引] stop[结束索引]
lindex key index
llen key
获取并移除数据
lpop
rpop
从key1列表右边移除一个值,插到key2列表左边
rpoplpush key1 key2
按照索引下标获得元素<从左到右>
lrange key start stop
规定时间内并移除数据
blpop key1 key2 timeout[秒]
brpop key1 key2 timeout
移除指定数据
lrem key count[个数] value
将列表key下标为index的值替换成value
lset key index value
在value的后面插入newvalue插入值
linsert key before value newvalue
set:
添加数据
sadd key value1 [value2]
获取全部类型
smembers key
删除数据
srem key value1 [value2]
获取集合数据总量
scard key
判断集合中是否包含指定数据
sismember key value
随机获取集合中指定数量的数据
srandmember key count
随机获取集合中的某个数据并将该数据移除集合
spop key
求两个集合的交、并、差集
sinter key1 [key2]
sunion key1 [key2]
sdiff key1 [key2]
求两个集合的交、并、差集并存储到指定的集合中
sinterstore destination[指定的集合] key1 [key2]
sunionstore destination key1 [key2]
sdiffstore destination key1 [key2]
将指定数据从原始集合中移动到目标集合中
smove source[指定数据] destination[原始] member[目标]
sorted_set(有序集合):
添加数据
zadd key score1 value1 score1 value1
获取全部数据
zrange key start stop [withscores] 升序排序
zrevrange key start stop[withscores] 降序排序
删除数据
zrem key value [value ....]
按条件获取数据
zrangebyscore key min max [withscores] [limit]
zrevrangebyscore key min max [withscores]
条件删除数据
zremrangebyrank key start stop
zremrangebyscore key min max
获取集合数据总量
zcard key
zcount key min max
集合交、并操作
zinterstore destination numkeys[几个] key [key...]
zunionstore destination numkeys key [key...]
获取数据对应的索引
zrank key value
zrevrank key value
score值获取与修改
zscore key value
zincrby key increment[递增值||递减值] value
发布和订阅
发布订阅是一种消息通信模式:发送这发送消息,订阅者接受消息
发送者发送频道1,订阅者订阅了频道1,就能收到消息,没有订阅频道1,就收不到消息。
1、打开客户端订阅 channel1<频道1>
SUBSCRIBE channel1
2、打开客户端,给channel1发布消息 hello
publish channel1 hello
redis6新数据类型
Bitmaps:
设置某个偏移量的值(0或1)
setbit key offset<偏移量,就把偏移量当作字段(数字字段)> value<只能设置0和1>
获取某个偏移量的值
getbit key offset
统计key字符串被设置为1的bit数
bitcount key
bitop是一个复合操作,它可以做多个bitmaps的and(交集)、or(并集)、not(非)、xor(异或)操作并将结果保存在destkey中
bitop and(or、not、xor) destkey key1 key2...
HyperLogLog:
添加指定元素到key中
pfadd key element1 [element2...]
计算key的近似基数
pfcount key [key ...]
将一个或多个sourcekey合并后的结果存储另一个destkey中
pfmerge destkey sourcekey [sourcekey...]
Geospatial:
添加地理位置
geoadd key longitude latitude member [longitude latitude member....]
例子:geoadd china:city 116.38 39 beijing
获取指定地区的坐标值
geopos key member [member...]
获取两个位置之间的直线距离
geodist key member1 member2
已给定的经纬度为中心,找出某一半径内的元素
georadius key longitude latitude radius m|km|ft|mi
事务和锁的机制
基本操作:
事务是一个单独的隔离操作:事务中的所有命令都会序列化,按顺序的执行。事务
在执行的过程中,不会被其他客户端发送过来的命令请求打断。
事务主要作用就是串联多个命令防止别的命令插队。
从输入Multi命令开始,输入的命令都会依次进入命令队列中,但不会执行,
直到输入Exec后,redis会将之前的命令队列中的命令依次执行。
组队的过程中可以通过discard来放弃组队。
Multi
[组成队列命令]
命令 discard
..... --------------[放弃组队]
Exec
[执行队列命令]
悲观锁:每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这
样别人想拿这个数据就会block直到它拿到锁。
乐观锁:每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会
判断一下,在此期间别人有没有去更新这个数据,可以使用版本号等机制。
WATCH key [key....]
在执行multi之前,先执行 watch key1 [key2],可以监视一个或多个key,如果在事务执
行之前这个或许这些key被其他命令所改动,那么事务将被打断。