【redis】三、redis的五大类型介绍和使用

redis基本类型

  1. string
  2. list
  3. hash
  4. set
  5. sorted set

在redis中,都是以key-value方式存储数据。在key中,除了保存key的字符串以外,还保存了value的type(是哪种基本类型)、实际值的类型(是数字还是字符串)。这样做的好处是,每次命令,不需要拿到value之后才能判断这个命令是否正确(例如对字符串进行了自增命令)

另外在redis中维护了正反索引,所以在选取范围的时候,开始下标设置为0,结束设置为-1,就是取全部数据。结束设置为-2,就是取从开始到倒数第二个数据。

 

help @类型,可以看到该类型的命令与解释

help 命令,可以看到该命令的解释

 

redis二进制安全,客户端从redis从拿到的是字节流,而不是字符流。只要保证set客户端和get客户端的编码格式一致,就不会出现乱数据

 

String

string类型分为三类:字符串、数值、bitmap

字符串

基础命令为:

  1. set ,设置key 和value
  2. get,获取key的vAlue
  3. append,往key的value后追加字符串
  4. setrange,设置key的第几位为value
  5. getrange,获得key的value的开始下标到结束下表的字符串
  6. strlen,获得key的value的长度
  7. mset
  8. mget
  9. msetnx,没有才设置

数值

特殊的命令为:

  1. incr,对数值类型的value+1
  2. incrby,对key增加指定值
  3. incrbyfloat,对key增加浮点数

object encoding key 可以看实际值的类型是字符串还是数字

bitmap

bitmap是按位进行保存字符串。一个字符即8位,每位上都是0或1。该类型进行与、或操作特别快。并且在特定场景下可以非常夸张的节省空间!比如按记录用户的一年内登录状态,只需要366位就可以记录这个用户每天的登录情况。

  1. setbit,设置第几位的值
  2. getbit
  3. bitcount,有几位是1
  4. bit and/or destKey key [key],位操作。

list

list类型是有序的列表,类似与链表。操作大致分为,从左边或者右边insert、从左边或者右边pop、获取list中第几个等等。比较特殊的是list取值的时候可以阻塞住,一直到取到值为止

基础命令为:

  1. lpush key value,从左边插入
  2. rpush key value,从右边插入
  3. lrange key start top,从左边开始获取几个
  4. llen key, list大小
  5. ltrim key start stop,保留范围内的内容
  6. lpop key,从左获取第一个VALUE
  7. rpop key
  8. blpop key expiretime

hash

hash就是redis中的map类型。没什么特殊

基础命令:

  1. hset key field value
  2. hget key field
  3. hgetall
  4. hkeys
  5. hscan cursor ,按下标输出

set

无序不能重复。比较特殊的是当用srandmember key 正数,返回的是不重复的几个值,没有就为空,如果是负数,则返回的是可以重复的值,没有也会填充。

  1. sadd key value [value]
  2. scard key 获得集合key内总数
  3. sdiff k1 k2,取k1中不在K2中的元素
  4. smembers key, 获得key的所有元素
  5. spop key [count],弹出count个随机元素
  6. srandmember key [count],随机取count个元素。count为正数,取不重复的。为负数,可取重复的
  7. sunion k1 k2,取K1 k2的交集

可用来抽奖

sorted-set

有序的set。并且每个值有权重的属性,可以按权重大小输出。并且有降序的命令。也有可以阻塞的命令。

sorted-set取值非常快,是因为底层用了跳表的数据格式。

跳表:

1.有一个按顺序的链表。

2.每一个元素,都随机确定是否要向上浮动。最后形成一个二维链表。

3.查找的时候,就用最高层的来查找。找到上一个值比当前值小,下一个值比当前值大的时候,向下一级继续进行搜索

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值