Redis常用命令以及五大类型和其他常用类型操作命令

切换数据库:

select index #切换数据库 redis默认16个数据库 index 从0开始 15结束

清空Redis所有key:

flushdb   # 清除当前数据库的所有keys
flushall    # 清除所有数据库的所有keys

查询匹配key:

keys *            # 查看所有keys
keys prefix_*     # 查看前缀为"prefix_"的所有keys

key基本操作:

exists key      # 确认一个key是否存在
set key value   # 设置key和value
get key         # 获取key的value
del key         # 删除一个key
type key        # 返回值的类型
keys pattern    # 返回满足给定pattern的所有key
random key      # 随机返回key空间的一个
rename oldname newname    # 重命名key
dbsize         # 返回当前数据库中key的数目
select index    # 选择第0~15中的库
move key dbindex      # 移除当前数据库中的key到dbindex数据库
type key        # 查看当前key的类型

设置key的生存时间:

expire key seconds    #设置key的有效时间  单位为秒
ttl key               #获取key的剩余有效时间,持久key返回-1,key不存在返回-2,具体时间返回秒数
persist key           #设置有时效性的key为持久key

String类型:

set key value   # 设置key
get key    # 获取key
INCR key    # 递增数字,仅仅对数字类型的键有用,相当于Java的i++运算
INCRBY key increment    # key自增increment,increment可以为负数,表示减少。
DECR key    # 递减数字,仅仅对数字类型的键有用,相当于Java的i–-
DECRBY key decrement    # key自减decrement,decrement可以为正数,表示增加。
INCRBYFLOAT key increment    # 增加指定浮点数,仅仅对数字类型的键有用
APPEND key value    # 向尾部追加值,相当于append方法 若果key不存在相当于 set key value
STRLEN key    # 获取字符串长度
MSET key1 value1 [key2 value2 ...]    # 同时设置多个key的值 例如 mset k1 v1 k2 v2 k3 v3
MGET key1 [key2 ...]                  #  同时获取多个key的值 例如 mget k1 k2 k3
getrange key start end #截取字符串 start开始 end结束 闭区间[start,end] 起始值从0开始。当end为负数时 end 为-1时 截取结束位置为从尾部起第1个字符串,-2时倒数第二个字符串开始结束,依次类推
setrange key offset value #替换指定位置的字符串 offset表示从第几个开始替换,起始值为0
setex key second value #set with expire 设置key值得过期时间 second过期时间
setnx key value # set if not exist	如果不存在则设置值,值存在时不创建失败,**在分布式锁里面会常常使用**
msetnx k1 v1 k2 v2 #同事设置多个值,如果不存在则设置值,值存在时不创建失败,是个原子性操作,要么全部成功,要么全部失败
#set操作对象,只是String类型的扩展,
set obj:id {
    
    filed} #设置一个对象值为一个json字符串 例如 set user:1 {name:zhangsan,age:3}
mset obj:id: {
    
    key:value} obj:id {
    
    key:value} #设置对象的值 例如 mset user:1 {name zhangsan} user:1 {name:lisi,age:3} 
mget obj:{
    
    id}:key obj:{
    
    id}:key #获取对象的值 例如 mget user:1:name user:1:age 结果 zhangsan 3
getset key value #先get值,再set值;如果不存在则返回null,如果存在值,则获取原来的值,并将原有的值设置为新的值

Hash类型:一个key对应一个map

HSET key field value    # 赋值 hset user1 name zhangsan
HMSET key field1 value1 [field2 values]    # 一次赋值多个字段
HSET key field    # 取值
HMSET key field1 [field2] # 一次取多个字段的值
HGETALL key    # 一次取所有字段的值
HEXISTS key field    # 判断字段是否存在
HSETNX key field value    # 当字段不存在时赋值
HDEL key field    # 删除字段
HKEYS key    # 获取所有字段名
HVALS key    # 获取所有字段值
HLEN key    # 获取字段数量
hincrby key filed decrement #给key 中某个字段的值加decrement    
#hdecrby key filed decrement  # 未找到递减指令
hsetnx key value # set if not exist	如果不存在则设置值,值存在时不创建失败,**可用于分布式锁里面**
#hset 扩展运用
hset obj:{
    
    id}:key [field]  #设置对象的值 例如 hset user:1 name zhangsan age 3 。区分和string,string使用的是mset 命令,hash使用的是hset保存在一个字段中所以hash更适合存储对象
hmget obj:{
    
    id} field obj:{
    
    id} field #获取对象的值 例如 hmget user:1 name user:1 age 结果 zhangsan 3

List类型:有序可重复 理解为链表数据结构,可做队列和栈

rpush key value    # 在名称为key的list尾添加一个值为value的元素
lpush key value    # 在名称为key的list头添加一个值为value的 元素
llen key    # 返回名称为key的list的长度
lrange key start end    # 返回名称为key的list中start至end之间的元素,先放进的值排在后面 例如 lpush a 1; lpush a 2; lpush a 3;lrang a 0 1 获取的值为 3 2
ltrim key start end     # 截取名称为key的list
lindex key index    # 返回名称为key的list中index位置的元素
lset key index value    # 给名称为key的list中index位置的元素赋值,当值不存在时会报错,相当于一个更新操作
lrem key count value    # 删除count个key的list中值为value的元素
lpop key    # 返回并删除名称为key的list中的首元素
rpop key    # 返回并删除名称为key的list中的尾元素
rpoplpush srckey dstkey    # 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
linsert key before|after plaint value  #向key中某个元素的之前或之后插入一个值,例如 lpush a 1;lpush a 2; linsert a before 1 3;结果为 2 3 1

Set类型:无序不重复

sadd key member    # 向名称为key的set中添加元素member
srem key member    # 删除名称为key的set中的元素member
spop key    # 随机返回并删除名称为key的set中一个元素
smove srckey dstkey member    # 移动一个集合的元素到另外一个集合中 
scard key    # 返回名称为key的set的基数
smembers key    # 返回名称为key的set的所有元素
sismember key member    # member是否是名称为key的set的元素
srandmember key    # 随机返回名称为key的set的一个元素
srandmember key count    # 随机返回名称为key的set的指定个数的元素
sinter key1 key2 …key   # 求交集
sinterstore dstkey keys    # 求交集并将交集保存到dstkey的集合
sunion key1 keys    # 求并集
sunionstore dstkey keys    # 求并集并将并集保存到dstkey的集合
sdiff key1 keys    # 求差集
sdiffstore dstkey keys    # 求差集并将差集保存到dstkey的集合


Zset(SortSet)类型:有序不重复

ZADD key score1 value1 [score2 value2 score3 value3 ...]    #  添加元素 score 表示分数,排序用的一句,一般填写数值类型的值 1,2,3 ...
ZSCORE key value    # 获取元素的分数
ZRANGE key start stop [WITHSCORE]    # 获取排名在某个范围的元素,按照元素从小到大的顺序排序,从0开始编号,包含start和stop对应的元素,WITHSCORE选项表示是否返回元素分数
ZREVRANGE key start stop [WITHSCORE]    # 获取排名在某个范围的元素, 反转,和上一个命令用法一样,只是这个倒序排序的。
ZRANGEBYSCORE key min max    # 获取指定分数范围内的元素,包含min和max,(min表示不包含min,(max表示不包含max,+inf表示无穷大 -inf表示无穷小 
ZINCRBY key increment value    # 增加某个元素的分数
ZCARD key    # 获取集合中元素的个数
ZCOUNT key min max    # 获取指定分数范围内的元素个数
ZREM key value1 [value2 ...]    # 删除一个或多个元素
ZREMRANGEBYRANK key start stop    # 按照排名范围删除元素
ZREMRANGEBYSCORE key min max    # 按照分数范围删除元素,min和max的用法和4中的一样
ZRANK key value    # 获取正序排序的元素的排名 起始值 0
ZREVRANK key value    # 获取逆序排序的元素的排名 起始值 0

geospatial类型:地理位置(朋友定位,附近的人,打车计算位置)
有效的经度从-180度到180度。
有效的纬度从-85.05112878度到85.05112878度。
该类型命令只有6种

geoadd key longitude latitude member [longitude latitude member ...]#添加地理位置 ,将指定的地理空间位置(纬度、经度、名称)添加到指定的key中。这些数据将会存储到sorted set这样的目的是为了方便使用GEORADIUS或者GEORADIUSBYMEMBER命令对数据进行半径查询等操作 例如 geoadd china:city 116.40 39.90 beijing 121.47 	31.23 shanghai
geopos key member [member ...]
 #获取指定地理位置的经度纬度 例如 geopos china:city beijing 结果 116.40 39.90;geopos china:city beijing shanghai
geodist key member1 member2 [m|km|ft|mi]
# 获取两个指定位置之间的距离,如果两个位置之间的其中一个不存在, 那么命令返回空值,指定单位的参数 unit 必须是以下单位的其中一个:m 表示单位为米(默认),km 表示单位为千米,mi 表示单位为英里,ft 表示单位为英尺.例如 geodist china:city beijing shanghai km
georadius key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]# 以给定的经纬度为中心,找出某一半径内的元素,WITHDIST: 在返回位置元素的同时, 将位置元素与中心之间的距离也一并返回,WITHCOORD: 将位置元素的经度和维度也一并返回,WITHHASH: 以 52 位有符号整数的形式, 返回位置元素经过原始 geohash 编码的有序集合分值,ASC: 根据中心的位置, 按照从近到远的方式返回位置元素,DESC: 根据中心的位置, 按照从远到近的方式返回位置元素,COUNT <count> 选项去获取前 N 个匹配元素.例如 georadius china:city 110 30 100 km withdist 1 asc 结果 beijing

georadiusbymember key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key] #这个命令和 GEORADIUS 命令一样, 都可以找出位于指定范围内的元素, 但是 GEORADIUSBYMEMBER 的中心点是由给定的位置元素决定的, 而不是像 GEORADIUS 那样, 使用输入的经度和纬度来决定中心点指定成员的位置被用作查询的中心,例如 georadiusbymember china:beijing 100 km withdist count 1 desc,以北京为中心100km为半径,按降序查找100k内的1个城市
geohash key member [member ...]#返回一个或多个位置元素的geohash表示,该命令将返回11个字符的Geohash字符串,

底层基于zset类型实现的,可以使用zset中的一些命令,例如 zrange key start end,查看元素;zrem key 移除元素

hyperloglogs类型:能够统计元素(不重复),误差不超过0.81
基数:不重复的元素

pfadd key #添加元素
pfcount key # 查询元素的个数
pfmerge destkey sourcekey [sourcekey] #合并元素

bitmaps类型:位存储、位图,都是操作二进制来进行记录,只有0和1(0否,1是)

setbit key offset value #添加元素
getbit key offset  #获取元素
bitcount key [start end] #统计个数 start和and代表字节数,一个字节8位,1到3个字节就是索引在8到23之间

如有错误欢迎指正!

猜你喜欢

转载自blog.csdn.net/HBliucheng/article/details/111600127