Redis的常用数据类型及常用命令

文章详细介绍了Redis中的各种数据类型如String、List、Set、Hash、Zset、Bitmap、HyperLogLog和Geospatial等的操作命令,以及基础命令如keys、exists、del等。同时,文章还涵盖了Redis的持久化方法,包括RDB和AOF,主从复制和集群设置,以及查询和调试工具。
摘要由CSDN通过智能技术生成

redis常见数据类型操作命令
英文https://redis.io/commands/
中文http://www.redis.cn/commands.html

基础命令

keys *
exists k1
type k1
del k1
unlink k1
expire k1 20
ttl k1
move key dbindex
select dbindex
dbsize
flushdb
flushall
auth password
memory usage k1
命令解释
keys *查看当前库所有的key
exists key判断某个key是否存在
type key查看keyd的类型
del key删除指定的key及数据
unlink key非阻塞删除,仅将key从keyspace元数据中删除,真正的删除会在后续异步中操作
ttl key查看过期秒数,-1表永不过期,-2表已过期
expire key 秒数给key设置过期时间
move key dbindex [0-15]将当前库的key移到指定的库中
select dbindex切换数据库【0-15】,默认为0
dbsize查看当前库key的数量
flushdb清空当前库
flushall清空全部库
auth password输入密码验证,未配置密码则不需要
memory usage key查询key和value在RAM中所占字节数

十大数据类型

String 字符串

命令解释
set key value [NX XX] [GET] [EX seconds PX milliseconds EXAT unix-time-seconds PXAT unix-time-milliseconds KEEPTTL]设置key
get key获取值
mset key1 value1 key2 value2…设置1或多个key
mget key1 key2 …获取给定key的值
msetnx key1 value1 key2 value2…同事设置1或多个key,只在所有key都不存在时成功
getrange key index1 index2获取指定区间范围内的值,0到-1表全部
setrange key index value设置从index开始改为value
incr keyvalue加1
incrby key incrementvalue 加整数increment,可以是负数
incrbyfloat key incrementvalue 加浮点数increment
decr keyvalue 减1
decrby key decrementvalue减整数decrement
strlen key获取value的长度
append key value在key的值后面加value
setnx key value只在 key 不存在时设置 key和值
setex key 过期秒 value设置带过期时间的key,动态设置
getset key value先get后set,返回原值

set参数详解

set k1 v1
get k1
append k1 234
strlen k1
setnx k2 1
incr k2
decr k2
incrby k2 10
decrby k2 10
mset m1 n1 m2 n2 m3 n3
mget m1 m2 m3
msetnx mm1 nn1 mm2 nn2 mm3 nn3
getrange k1 0 3
setrange k1 6 add001
setex kk1 20 vv1
getset k1 v98765

List 列表

#从左边/右边插入一个或多个值。
lpush  lk1 v12 v12 v13 v14 
rpush  lk2 v21 v22 v23 v24 

#从左边/右边吐出一个值。值在键在,值光键亡。
lpop lk2
rpop lk1
#从<key1>列表右边吐出一个值,插到<key2>列表左边。
rpoplpush  lk2 lk1
# 按照索引下标获得元素(从左到右)
lrange <key><start><stop>
# 0左边第一个,-1右边第一个,(0-1表示获取所有)
lrange mylist 0 -1
# 按照索引下标获得元素(从左到右)
lindex <key><index>
# 获得列表长度 
llen lk1
# 在<value>的后面插入<newvalue>插入值
linsert <key>  before <value><newvalue>
# 从左边删除n个value(从左到右)
lrem <key><n><value>
# 将列表key下标为index的值替换成value
lset<key><index><value>
命令解释
lpush key value1 value2 …将value插入头部
rpush key value1 value2 …将value插入尾部
lrange key index1 index2获取指定范围内的元素;0 -1为全部
lpop key从左边删除一元素并返回
rpop key从右边删除一元素并返回
lindex key index获取key中对应索引的元素
llen key获取key中元素的个数
lrem key 数字N value删除N个值为value的元素,N为0则删全部value
ltrim key index1 index2截取索引范围内的值再赋值给key
rpoplpush key1 key2将key1的最后一个元素移到key2列表并返回这个元素
lset key index value根据索引index更新为value
linsert key before/after 已有值 新值在某个已有值的前/插入新的值

Set 集合

命令解释
sadd key value1 value2 …将元素加入到 key 中,已经存在的元素会忽略
smembers key取出该key的所有值
sismember key value判断key是否为含有value,有1,没有0
scard key返回key的元素个数
srem key value1 value2 …删除key中的元素
spop key随机从key中弹出并删除一个值
srandmember key n随机从keyt中取出n个值,不会从集合中删除
smove key1 key2 value把key1中value移动到key2
sinter key1 key2 …返回key的交集元素
sintercard numkeys key1 key2 … [limit N]返回key的交集个数(Redis 7)
sunion key1 key2 …返回key的并集元素
sdiff key1 key2 …返回两个key的差集元素(在key1中不在key2)

Hash 哈希

命令解释
hset key field value给key中的field键赋值value
hget key field从key中field取出 value
hmset key field1 value1 field2 value2 …批量设置hash的值
hmget key field1 field2 …获取key中给定field的值
hgetall key获取key中所有的filed和value
hdel key field1 field2 …删除key中的field
hlen key查看key 中所有 field的数量
hexists key field查看key 中是否存在 field
hkeys key列出key中的所有field
hvals key列出key中的所有value
hincrby key field increment为 key 中的域 field 的值加上整数increment
hincrbyfloat key field increment为 key 中的域 field 的值加上浮点数increment
hsetnx key field value将 key 中的 field 的值设置为 value ,field 不存在时赋值,存在则无视

Zset(Sorted set) 有序集合

命令解释
zadd key score1 value1 score2 value2…将value及其score值加入到 key中
zrange key start stop [WITHSCORES]按分数从小到大排序,返回key 中下标在start和stop间的元素;带WITHSCORES,可以让分数一起和值返回到结果集
zrevrange key start stop [WITHSCORES]按分数从大到小排序,返回key 中下标在start和stop间的元素;带WITHSCORES,可以让分数一起和值返回到结果集
zrangebyscore key min max [withscores limit offset count]返回key中所有score介于 min 和 max 之间(包括等于 min 或 max )的成员。成员按 score 值递增(从小到大)次序排列
zrevrangebyscore key maxmin [withscores] [limit offset count]同上,改为从大到小排列
zincrby key increment value为元素的score加上增量
zrem key value删除key中指定value的元素
zcount key min max统计key,分数区间内的元素个数
zrank key value返回value在key中的排名,从0开始
zrevrank key value返回value在key中的逆序排名

Bitmap 位图

命令解释
setbit key offset value设置key的偏移位的值,值只能0或1,偏移量从零开始
getbit key offset查询key的偏移位的值,偏移量从零开始
strlen key统计字节数量
bitcount key统计key中含有1的数量
bitop and 变量名key key1 key2 …统计给定key中相同偏移量上是1的数量,使用bitcount 变量名key 查询

HyperLogLog 基数统计

命令解释
pfadd key value1 value2 …添加元素到key
pfcount key查询key中的数量
pfmerge 新key key1 key2 …合并到新key

Geospatial 地理空间

命令解释
geoadd key 经1 纬1 名称1 经2 纬2 名称2…添加元素到key,名称加双引号
geopos key 名称1 名称2…查询key中的名称经纬度
geohash key 名称1 名称2…返回名称的geohash算法生成的base32编码值
geodist key 名称1 名称2 [m km ft mi]返回key中名称间的距离
georadius key 经 纬 距离 单位 withdist withcoord count 数量N withhash desc以给定的经纬度为中心, 返回key中与中心的距离不超过给定最大距离的位置元素。WITHDIST: 在返回位置元素的同时, 将位置元素与中心之间的距离也一并返回。 距离的单位和用户给定的范围单位保持一致。WITHCOORD: 将位置元素的经度和维度也一并返回。WITHHASH: 以 52 位有符号整数的形式, 返回位置元素经过原始 geohash 编码的有序集合分值。 这个选项主要用于底层应用或者调试, 实际中的作用并不大。COUNT 限定返回的记录数。
georadiusbymember key 名称 距离 单位 withdist withcoord count 数量N withhash desc以key中的名称为中心, 返回key中与中心的距离不超过给定最大距离的位置元素。
geoadd china:city 121.47 31.23 shanghai
geoadd china:city 106.50 29.53 chongqing 114.05 22.52 shenzhen 116.38 39.90 beijing
geopos  china:city shanghai
geodist<key><member1><member2>  [m|km|ft|mi ]  获取两个位置之间的直线距离
m 表示单位为米[默认值]。
km 表示单位为千米。
mi 表示单位为英里。
ft 表示单位为英尺。
如果用户没有显式地指定单位参数, 那么 GEODIST 默认使用米作为单位

georadius<key>< longitude><latitude>radius  m|km|ft|mi   以给定的经纬度为中心,找出某一半径内的元素
经度 纬度 距离 单位

Stream 流

命令解释

bitfield 位域

命令解释

事务

命令解释
multi表示事务的开始
discard取消事务,放弃执行事务块内的所有命令
exec执行所有事务块内的命令
watch key1 key2 …监视key,若事务执行前key被其他命令改动,那事务将被打断;执行exec命令或关闭客户端都会取消监视
unwatch取消watch命令对所有key的监视
watch k1
multi
set k1 10 # 另一个客户端执行此行
set k1 20
exec
# 返回nil,k1的value为10,乐观锁的功能;若在exec前执行unwatch,k1的value为20

RDB持久化手动触发保存

即使未开启RDB持久化的配置,也能手动触发成功

命令解释
save阻塞式持久化,执行期间不可处理其他命令,线上禁止使用
bgsavefork一子线程非阻塞式异步持久化
lastsave最后一次成功执行快照时间戳(终端执行 date -d @1687830596)
save
bgsave
lastsave

AOF持久化手动触发

配置文件 appendonly yes

bgrewriteaof

主从复制

命令解释
info replication查看此服务的主从关系及配置信息
replicaof 主库ip 主库port一般配置在文件中,不知道和下一条的区别在哪
slaveof 主库ip 主库port修改要同步的主库,重启服务后失效
slaveof no one取消主从关系,成为master,重启服务后失效

集群

命令解释
info replication查看此服务的主从关系及配置信息
cluster info查看集群信息
cluster nodes查看集群结点的关联信息
cluster keyslot key查看key存放的槽位值
cluster failover此slave切换为master,原master成为cluster
cluster countkeysinslot 槽位值查看槽位值的占用情况,1是占用,0是未占用

查询More key

scan num1 match * count num2 num1 为游标的数字,第一次使用为0,根据执行结果第一行的数字再次修改;num2 为返回的记录数;* 为匹配模式

scan 0
scan 0 match *u*m*r* count 10

调试

| 命令 | 解释 |
|object encoding key|查看编码|
|debug object key|调试命令,查看key的内部结构,需在配置文件开启,见下|

开启: enable-debug-command local
返回结果解释
value at: 内存地址
refcount: 引用次数
encoding: 物理编码类型
serializedlength: 序列化后的长度(注意这里的长度是序列化后的长度,保存为rdb文件时使用了该算法,不是真正存贮在内存的大小),会对字串做一些可能的压缩以便底层优化
lru:记录最近使用时间戳
lru_seconds_idle:空闲时间
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值