Redis的5大类型

Redis的5大类型

Redis是单进程、单线程、单实例并发很多的请求,如何变得很快的呢?
Redis默认有16个库
redis-cli --raw进行当前编码的匹配
底层是按照字节存储的,二进制安全
Redis的5大类型:

1.String

包含字符串,数值,bitmap
1.1字符串
nx xx
nx:只有没有key才存储
xx:只有redis中有key才更改
append:给key的value添加字符串
STRLEN:长度
msetnx:设置很多不重复的key,原子性,一个不成功都不成功
mget:取很多value
getset:设置一个新值,并返回旧值
getrange:取出索引之间的字符串
正反向索引:正向从0开始,反向从-1开始
setrange:给索引值开始的位置,覆盖值
type key 可以看数据库key对应的value的类型
OBJECT encoding key 可以看对应key的具体类型包括int ,encoding一共有三种类型,int,embstr,raw
1.2数值
INCR 加一
INCRBY
DECR
DECRBY
INCRBYFLOAT
1.3bitmap
应用场景一:随机的统计用户的登陆天数用setbit 46个字节统计一个用户一年的登陆信息,用bitcount统计一段时间登陆的天数,比数据库成本低还快,都是二进制的运算,把每一个用户设置成一个key,从第一位开始统计登陆的天数
应用场景二:活跃用户的统计,涉及到用户的去重问题,将每一天设为一个key,将每一个用户排序,每一位就是一个用户,为1就是当天某个用户登陆了,bitop or 将这么多天的登陆的信息统计到一个key里,将这个key bitcount

setbit key 设置16进制00000000的位数的值
bitpos key 0或者1 第一次出现的offset
bitcount 二进制1的统计
bitop 按位与或非

2.list

存储的是双向的链表
lpush rpush 给链表中存储value
lpop rpush 拿出链表的元素
lrange看list中的所有元素
lindex查看list中索引处的元素
lset替换list中索引处的元素
lrem 删除几个‘x’元素
linsert 给指定的位置插入元素,只能在第一次出现的位置 count 0是全部删除
blpop 阻塞取元素 单播订阅
ltrim 删除链表两端的元素

3.hash

给redis 的value再存储一个键值对
1.hset
2.hmset
3.hget
4.hmget
5.hkeys取出hash的所有的key
6.hvals取出hash所有的value
7.hgetall取出所有的键值对
8.hincrbyfloat 对value进行计算浮点型

4.set

去重,无序,无索引
1.sadd 去重存储set
2.smembers 列举出set里所有的元素
3.srem 去除某几个元素
4.sinter 求set的交集
5.sinterstore将交集的结果保存到一个set中
6.sunion 求set的并集
7.sunionstore 将并集的结果保存到一个set中
8.sdiff 做差集
9.随机事件,srandmember 0 不返回,
大于0,返回至多返回随机的等于set中的元素,去重
小于0,返回可能重复的数据随机的,count几个
返回几个
应用场景一:抽奖,给set中存放粉丝,用srandmember抽几个奖,有重复中奖和不重复抽奖
10.spop 随机抽出一个数,数不会再存在,年会抽奖

5.sorted_set

对数据进行有序排列 有索引,有分值,元素不可重复,分值相等按照名称排名
1.zadd 多了一个分值,分值都为1 ,按名称来排
2.zrange 查看所有分值由小到大的元素,withscores,可以看见分值
3.zrangebyscore 按照分值来取
4.zrevrange 按照分值的从大到小取
5.zscore 根据元素取分值
6.zrank 根据元素取排名
7.zincrby 给分值进行运算 应用场景:明星投票,歌曲排行榜
8.zunionstore weights 权重,0.5 ,这个sorted_set的值乘以权重,再求并集
aggregate min/max 按照重复值的最大或者最小值进行求并集
9.zinterstore 进行对重复的名称的分值进行相加,去掉不同名称的部分
跳跃表 类平衡数
skip list
随机造层
数据比较多,增删改查都比较多的时候,平均最优

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值