十分钟捋完redis命令

十分钟捋完redis命令

把redis常用命令捋一遍,再举一些应用场景和实际例子,动手试一下,快速入门。

帮助系列

入门第一件事,学会使用帮助,redis命令千千万,总有记不住的时候,这时候你需要祭起help大法。

# 查看help使用方法,活用tab键
help
# help    + tab键,自动提示所有可以help的命令,注意help后面一定要有一个空格
# help a + tab键,自动提示a开头的方法
# help @ + tab键,自动提示所有@group 方法

服务器命令

通过help @server命令,可以列举相关的命令。

  • save、bgsave:同步保存数据到磁盘,后台异步保存数据到磁盘。
  • shutdown [nosave|save]:异步保存数据到硬盘,并关闭服务器。
  • flushdb、flushall:清空当前数据库,清空实例
  • monitor:监控服务器收到的命令。
  • client [list|getname|setname|pause|kill]:客户端列表|查看|改名|暂停|断开。
  • config [set|get|rewrite|restart]:配置文件 修改|获取|重写|重启
  • info [section]:获取服务器信息,section = server clients memory persistence stats replication cpu cluster keyspace

客户端命令

客户端命令分几大类,大部分命令可以按数据类型分。

string

通过help @string命令,可以列举相关的命令。

  • append:在key原本的value后面追加一个value
  • getbit、setbit、bitcount、bitfield、bitop、bitpos: bitmap的一些操作,通常是处理一些大的状态分布问题。
  • decr、decrby、incr、incrby:逐步减少key值、逐步按量减少key值、逐步增加key值、逐步按量增加key值
  • get、getrange、getset、mget:获得key的value,获得key的某段值,获得旧key+设置新key,批量获得
  • set、setrange、setex、psetex、setnx、mset:设key值,设key某段值,设key值+有效期(秒),设key值+有效期(毫秒),设key值仅当不存在,批量设key值

注意一些批量key的操作,不能在不同slot上使用,比如mget mset

# 基本就是改查,加上ex和nx
set name it_laowu
setnx name it_laozhou
get name
append name _inshanghai
getrange name 0 10
setrange name 11 guangzhou
getset name it_laowu
setex name2 10 booom
#如果是集群,很可能由于key在不同slot而失败
mget name name2
# 自增方法
set name2 1000
incr name2
incrby name2 5
decr name2
decrby name2 100
# bit 的用法,一般用于统计状态,假设max_userId=999999
setbit visitlog 999999 0
setbit visitlog 123 1
setbit visitlog 234 1
setbit visitlog 345 1
setbit visitlog2 234 1
bitcount visitlog
# 统计同时存在于两个访问记录的用户,集群会失败
bitop and allvisit visitlog visitlog2
bitcount allvisit

redis string

list

通过help @list命令,可以列举相关的命令。

  • lpop、rpop:左出,右出
  • lpush、rpush、lpushx、rpushx:左进,右进,左进仅当存在,右进仅当存在
  • rpoplpush:起点链表右出+终点链表左进
  • blpop、brpop、brpoplpush:堵塞左出,堵塞右出,堵塞起点链表右出+终点链表左进
  • lindex、linsert、llen、lrange、lrem、lset、ltrim:根据索引取值,根据值前/后插入,链表长度,取某段值,删除,根据索引设值,

链表的值为一个从左往右的链表,一般通过pop和push操作。

堵塞意味着一直等待到有值,所以堵塞都是pop操作。

lpush names laozhao laoqian laosun laoli laozhou laowu laozhen laowang
lpop names
rpop names
lpush names laowang
rpush names laozhao
#如果是集群,很可能由于key在不同slot而失败
brpoplpush names names2
lindex names 0
llen names
linsert names before laozhen laozhen2
lrange names 0 8
lset names 1 laozhen3
ltrim names 2 5

redis list

hash

通过help @hash命令,可以列举相关的命令。

  • hexists、hincrby、hincrbyfloat、hlen:某key中是否有某field,某key某field增量,某key某field增量float,某key中filed数量
  • hget、hgetall、hkeys、hvals、hmget:获得某key某filed值,获取key全部field和值,获取key全部field,获取key全部值,获取某key某些field值
  • hset、hsetnx,hmset:设某key某field值,设某key某field值仅当不存在,设某key某些field值
  • hdel:删除某key某些field
  • hscan:查找某key键值对
# 是否存在
hexists hname teacher
# 设值、获取、批量设置、批量获取
hset hname teacher it_laowu
hget hname teacher
hmset hname teacher laowu student xiaowu
hmget hname teacher student
# 设某key某field值仅当不存在
hsetnx hname dog wangcai
hsetnx hname dog wangcai
hlen hname
hkeys hname
hvals hname
hgetall hname
# 自增
hset hname money 1000
hincrby hname money 5
hdel hname dog money
hset hname money 1000.0
hincrbyfloat hname money 500.0

redis hash

set

通过help @set命令,可以列举相关的命令。

  • sadd、scard:添加成员,成员数
  • sdiff、sdiffstore:返回两个set的差别,返回两个set的差别并存储
  • sinter、sinterstore:返回两个set的交集,返回两个set的交集并存储
  • sunion、sunionstore:返回两个set的合集,返回两个set的合集并存储
  • sismember、smembers、srandmember:是否成员,成员列表,返多个随机成员
  • spop、srem、smove:出一个随机成员,删成员,移动一个成员到目标set
  • sscan:迭代集合中的成员
sadd nameset laozhao laoqian laosun laoli laozhou laowu laozhen laowang
scard nameset
sadd nameset2 laozhao2 laoqian2 laosun laoli laozhou laowu laozhen
#如果是集群,很可能由于key在不同slot而失败
sdiff nameset nameset2
sdiffstore newsetd nameset nameset2
sinter nameset nameset2
sinterstore newseti nameset nameset2
sunion nameset nameset2
sunionstore newsetu nameset nameset2
# 列表 判断成员 返随机成员
smembers nameset
sismember nameset laozhou
srandmember nameset
# 弹 删 移
spop nameset 1
srem nameset laowu
#如果是集群,很可能由于key在不同slot而失败
smove nameset nameset2 laosun
# sscan 就是查询
sscan nameset 0 match lao*
sscan nameset 0 match lao??

redis set

sorted_set

通过help @sorted_set命令,可以列举相关的命令。

  • zadd、zcard、zcount、zlexcount:添加成员,成员数,区间成员数,字典区间成员书
  • zincrby:增长成员分数
  • zinterstore、zunionstore:计算交集,计算合集
  • zscore、zrank、zrange、zrangebyscore、zrangebylex:返成员分数,返成员排名,按排名区间返回成员,按分数区间返回成员,按字典区间返回成员
  • zrevrank、zrevrange、zrevrangebyscore:返成员排名(递减),按排名区间返回成员(递减),按分数区间返回成员(递减)
  • zrem、zremrangebylex、zremrangebyrank、zremrangebyscore:删除集合成员,按字典区间删,按排名区间删,按分数区间删
  • zscan:简单的查找
# 新增
zadd teacher 33 laosun 24 laozhao 18 laoqian 43 laoli
zadd women 18 laozhao 43 laoli 50 laowang
# 计算
zcard teacher
zcount women 20 60
zincrby teacher 4 laosun
# 集合
zinterstore both 2 teacher women
zunionstore all 2 teacher women
# 查看
zscore teacher laosun
zrank teacher laosun
zrevrank teacher laosun
zrange teacher 0 1 withscores
zrevrange teacher 0 1 withscores
zrangebyscore teacher 20 50 withscores
zrevrangebyscore teacher 50 20 withscores
# 删除
zrem teacher laoli laosun
zremrangebyrank teacher 0 1
zadd teacher 33 laosun 24 laozhao 18 laoqian 43 laoli
zremrangebyscore teacher 10 30
#有效集合中同分数字典,- 代表min +代表max ( 代表 不包含  [ 代表 包含
zadd books 0 maths 0 chinese 0 english 0 music
zrangebylex books - +
zrangebylex books [chinese (music
zremrangebylex books [chinese (music
zlexcount books - +

redis sorted_set

通用

通过help @generic命令,可以列举相关的命令。

  • del:删除key
  • dump:导出key
  • exists:key是否存在
  • expire、pexpire:设置key多久过期时间(秒),毫秒
  • expireat:设置key何时过期
  • keys:查找key
  • scan:查找key
  • rename、renamenx:重命名、重命名仅当不存在
  • sort:排序

猜你喜欢

转载自blog.csdn.net/weixin_36572983/article/details/106938634