缓存学习(六):Redis的数据结构及基本命令

目录

0.key

1.string

2.list

3.set

4.hash

5.sorted set(zset)

6.streams

7.衍生类型

7.1 bitmaps

7.2.geo


Redis 5之前一共有六个主要数据结构:key、string、list、set、hash、sorted-set(zset),还有由string衍生出来的bitmaps、由zset衍生出来的geo。key类型实际就是byte数组,因此可以将任何二进制序列作为key使用,虽然key最大可以为512MB,不过最好还是尽量小一点,一般约定redis的key形式如:user:0001:name,代表id为0001的用户的姓名,这种命名方式兼顾可读性和性能。

Redis 5新增了stream类型。

0.key

下面是一些通用操作(或者说是对于key类型的操作):

  • keys pattern:显示匹配到的key,keys *就是显示所有key
  • exists key ...:检查key是否存在
  • expire key seconds:设置key在seconds秒后过期,pexpire是expire的毫秒版本
  • expireat key timestamp:设置key在到达timestamp时过期,pexpireat是expireat的毫秒版本
  • ttl key:查询key的过期时间,如返回-1则代表未设置过期时间,-2则代表键不存在,pttl是ttl的毫秒版本
  • persist key:移除key上设置的过期时间
  • del key:删除一个键值对
  • type key:查询元素类型
  • object subcommand [args...]:执行一些子命令,如:
    • refcount key:返回引用计数
    • encoding key:查询内部编码
    • idletime key:返回数据有多久没被访问过
    • freq key:返回数据访问频率计数
    • help:返回帮助信息
  • info:显示服务器信息
  • ping:测试连通性,成功则返回pong
  • config set config_name value 、config rewrite:前者用来修改配置,后者用于确认修改
  • move key db:移动key到另一个数据库
  • randomkey:随机返回一个对象的key
  • rename key newkey:重命名key
  • renamenx key newkey:重命名key,newkey必须不存在
  • dump key:将值序列化
  • restore key ttl serialized-value option:将序列化的值自动反序列化,然后插入数据库,option有以下可选值:
    • replace:如果key存在则替换
    • absttl:如果使用该选项,ttl必须是timestamp,相当于从expire变成了expireat
    • idletime seconds:参见object
    • freq frequency:参见object
  • migrate host port key option 或 migrate host port "" timeout option: 从远程服务器迁移数据到本机,option有:
    • copy:仅复制数据,而不是移动数据
    • replace:当本机有同名数据时,进行覆盖
    • keys key ...:适用于第二种形式,指定要迁移的key
  • touch key ...:更新指定key的访问时间
  • sort key option:对list、set、zset进行排序,option如下:
    • by pattern:使用外部键作为排序依据,例如list中有三个值 1 2 3,若pattern为weight_*,则会根据weight_1、weight_2、weight_3的值来排序,而不是根据字面值排序。pattern可以是不存在的键,这样就相当于没排序。
    • limit offset count:限制返回值数目
    • get pattern [get pattern...]:不返回排序数据本身,而是返回匹配的外部键的值,例如pattern为object_*,则返回object_1、object_2、object_3的值,而非字面值,get #就是返回被排序的数据
    • asc|desc:升序还是降序排序
    • alpha:对字符串按字典序排序
    • store destination:将排序结果输出
  • scan cursor [match pattern] [count count]:渐进式便利,返回下一个cursor值和本次遍历的键,与之作用相似的还有sscan、zscan、hscan,不做赘述,下面是个例子:
127.0.0.1:6379> scan 0
1) "15"
2)  1) "key3"
    2) "key2"
    3) "key6"
    4) "key9"
    5) "key4"
    6) "key1"
    7) "key10"
    8) "key7"
    9) "key8"
   10) "key5"
127.0.0.1:6379> scan 15
1) "0"
2) (empty list or set)

可以看到,第一次执行scan 0后,返回的新cursor是15,表示这一批最多遍历了15个数据,下一次执行scan需要从15开始,不过因为数据不够,所以执行scan 15后,cursor又回到了0。

  • wait num_of_replicas timeout:阻塞客户端直到上一次写入操作的结果传播到了num_of_replicas个副本处,或者超时
  • unlink key ...:相当于del,只不过会忽略不存在的键

此外还有一些Redis管理命令:

  • auth password:设置密码
  • echo message:显示给定消息,没什么具体作用
  • ping [message]:ping服务器,如果设置了message,ping成功后会返回这个message
  • quit:关闭客户端,断开连接
  • select db:更换数据库,例如 select 0就是切换到db0
  • swapdb db_1 db_2:交换两个数据库

以上命令只是一部分,Redis的所有命令可以查看官方文档:https://redis.io/commands

1.string

string可以用来表示3种值:字符串、正数、浮点数,可以自动进行转换,它支持的操作如下:

  • set key value option:用于设置键值对,key代表键,value代表值,option有以下可选项:
    • ex seconds:设置过期时间,单位秒
    • px milliseconds:设置毫秒级过期时间
    • nx:只有待设置的key不存在才会执行
    • xx:只有待设置的key存在才会执行
  • get key:获取值
  • mset key value [key value...]:同时设置多个键值对(至少一个)
  • mget key [key...]:同时获取多个值
  • getset key value:将key对应的值设置为value,并返回之前的值
  • setex key seconds value:相当于 set key value ex seconds
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值