Redis(一)中的value类型

字符串类型

命令中有nx 即为原子操作

set

所有命令
在这里插入图片描述在这里插入图片描述

set k1 val nx

nx:不存在时才去进行设置 ,只能新建,常用于分布式锁
xx:只有存在的时候才可以操作,只能更新
在这里插入图片描述

mset

给多个key赋值
在这里插入图片描述

append

追加操作,将字符串追加到指定key的末尾
在这里插入图片描述

getrange

取出指定key的从指定开始到结束的值,包含开始和结束位置

在这里插入图片描述
正反向索引
正向索引:从0开始 依次是 0、1、2、3。。。
反向索引:从-开始,依次是-1、-2、-3。。。
所以这个值也可以这么取
在这里插入图片描述

setrange

在这里插入图片描述
从offset开始 将value 添加到 key对应的vlaue中进行覆盖操作
在这里插入图片描述

strlen

获取字符串的长度
在这里插入图片描述

getset

设置新值,返回老值;如果没有值则直接set返回空
在这里插入图片描述

msetnx

设置新的值,如果已经存在则不能赋值,操作失败
原子性操作,只有都成功才会成功,只要有一个失败就都失败
在这里插入图片描述

数值类型

incr

固定加1操作
在这里插入图片描述

在这里插入图片描述

decr

固定减1操作
在这里插入图片描述

incrby、decrby

加或者减指定值的操作
在这里插入图片描述

incrbyfloat

加指定的小数
在这里插入图片描述

object encoding

string 的编码类型可能为:

OBJ_ENCODING_INT int :long 类型整数
OBJ_ENCODING_RAW raw :sds 字符串
OBJ_ENCODING_EMBSTR embstr :嵌入式字符串(编码后长度小于 44 字节的字符串)

在这里插入图片描述

二进制安全

当有数据需要进行保存时,只取字节流,来进行操作,reids本质存储的是字节,在使用redis一定要在用户端沟通好编码和解码

位图 bitmap

setbit

在这里插入图片描述
其中 offset 是二进制位的偏移量,表示第几个二进制位数,从0开始
比如
127.0.0.1:6379> setbit k1 7 1
表示 第 7个二进制位的值为1

在这里插入图片描述

在这里插入图片描述
如果可以转成asc码,优先转成asc码
在这里插入图片描述

bitpos

在这里插入图片描述
其中

  1. bit 表示 要查找的二进制字节
  2. start 表示字节开始的位置,这里指的是字节的索引,就是对应上图的圆圈
  3. end表示字节结束的位置,这里指的是字节的索引,就是对应上图的圆圈
  4. 返回的是二进制所对应的索引位置
    在这里插入图片描述

bitcount

在这里插入图片描述
其中

  1. start指的是字节索引开始位置
  2. end指的是字节索引的结束位置
  3. count:统计指定范围内的二进制1出现的次数
    在这里插入图片描述

bitop

在这里插入图片描述
其中

  1. destkey 是指目标key,将当前命令执行的结果放入到这个key中
  2. key … 多个key
  3. operation:逻辑操作 与 或 非 异或 按位
    在这里插入图片描述
    在这里插入图片描述
    按位与操作 全1 为1 其余为0
    在这里插入图片描述
    在这里插入图片描述
    按位或操作 全0为0 有1为1
    在这里插入图片描述
    在这里插入图片描述

实际场景

1.公司用户系统
需求:统计用户的登录天数,且窗口随机
方案:用户位图 bitmap进行存储,给每个用户分配400个二进制位,哪天登录了,就把对应的二进制位的值变为1,二进制索引为天数-1,每个用户占46B ,最终占用大小 46B*用户数
统计天数为bitcount key

2.618活动,登录送礼物大库备货多少礼物假设有2亿用户
活跃用户 比如1号 - 3号 用户连续登录 去重
方案:日期作为key offset映射为用户id,value为是否登录

在这里插入图片描述

list链表

所有命令
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
head:头指针
tial:尾指针

lpush

在这里插入图片描述
lpush 从左边往里面放值,头插法,
可以一次放多个值
在这里插入图片描述

rpush

在这里插入图片描述
rpush从右边往里面放值,尾插法
也是可以一次放多个值

lpop

在这里插入图片描述
lpop从左边开始弹出元素
弹出后,元素从列表中移除

lpop弹出 lpush放入的元素,后入先出 类似于栈
lpop 弹出 rpush放入的元素,先入先出,类似于队列

在这里插入图片描述

rpop

在这里插入图片描述
rpop从左边开始弹出元素
弹出后,元素从列表中移除

rpop弹出 rpush放入的元素,后入先出 类似于栈
rpop 弹出 lpush放入的元素,先入先出,类似于队列

同向操作为栈
反向操作为队列

在这里插入图片描述

lrange

在这里插入图片描述
lrange:查看元素
start:开始位置
stop:结束位置
查看所有元素 lrange key 0 -1

lindex

在这里插入图片描述
给出索引取出相应的元素

在这里插入图片描述

lset

在这里插入图片描述
根据索引去更新相应的元素
在这里插入图片描述

对于这个根据索引的操作,类似于数组

lrem

在这里插入图片描述
移除指定value的count个元素,
count:分为正数、负数、流
如果是正数:从上往下依次删除
在这里插入图片描述

如果是负数从下往上依次删除
在这里插入图片描述

linsert

在这里插入图片描述
第一个指定的元素前面或者后面插入一个元素
在这里插入图片描述

llen

在这里插入图片描述
统计list的长度

在这里插入图片描述

blpop

b开头的都是阻塞操作 block
在这里插入图片描述
阻塞弹出元素
timeout:阻塞时间,0-永久阻塞

ltrim

在这里插入图片描述
给定开始和结束位置,对两端的没有包括的数据移除
在这里插入图片描述
这里就移除了 从1开始4结束之外的位置

hash

所有命令
在这里插入图片描述
在这里插入图片描述

hset

在这里插入图片描述
往redis放入hash类型的值
field:放入的属性,value放入的值
在这里插入图片描述

hget

在这里插入图片描述
取值

hmset

在这里插入图片描述
一次性放入多个键值对

hmget

在这里插入图片描述
一次获取多个值

hgetall

在这里插入图片描述
获取所有的键值对

hexistx

在这里插入图片描述
判断属性是否存在

hkeys

在这里插入图片描述
获取所有的属性

hvals

在这里插入图片描述
获取所有的value值

hincrbyfloat

在这里插入图片描述
对value进行数值计算,加/减小数

hincrby

在这里插入图片描述
对value进行数值计算,加/减整数

应用场景
商品信息的展示数据,一批数据面向一个对象

set

所有命令
在这里插入图片描述在这里插入图片描述

sadd

元素是无序、去重的
在这里插入图片描述
往set中添加元素
在这里插入图片描述

srem

在这里插入图片描述
移除指定的元素,可以一次移除多个

在这里插入图片描述

smembers

在这里插入图片描述
获取key的所有member

sinter

在这里插入图片描述
去两个set集合的交集
在这里插入图片描述

sinterstroe

在这里插入图片描述
将交集的结果存放在 destination 中

在这里插入图片描述

sunion

在这里插入图片描述
取两个集合的并集
在这里插入图片描述

sunionstore

在这里插入图片描述

将取到的结果放到 destination 中
在这里插入图片描述

sdiff

在这里插入图片描述
取差集,取的是前面一个集合中在后面集合中不存在的元素
在这里插入图片描述

srandmember

在这里插入图片描述
从set 中随机取出count个元素
count为正数时:取出count个不重复的元素,不会超过已有的集合中元素的数量
count为负数时:取出count个可能重复的元素,一定会满足count个
count如果为0:不返回

在这里插入图片描述
实际场景
抽奖
10个奖品
用户 <10 或者 >10
中将是否可以重复
方案:set中存用户id,srandmember 随机抽取,正数不重复,负数可以重复

spop

在这里插入图片描述
随机从集合样本中弹出一个元素,移除掉
在这里插入图片描述

sorted_set

命令使用 z 开头
所有命令
在这里插入图片描述
在这里插入图片描述

zadd

在这里插入图片描述
添加元素到集合中
key 键
score 分值
member 元素

在这里插入图片描述

默认使用 物理内存左小右大的顺序,不随着命令发生变化

zrange

查看元素以及分值

在这里插入图片描述

在这里插入图片描述

zrevrange

zrange 的反向

在这里插入图片描述

zrangebyscore

按分值去取元素

在这里插入图片描述
min:最小分值
max:最大分值
在这里插入图片描述

zscore

在这里插入图片描述
通过元素取出分值
在这里插入图片描述

zrank

在这里插入图片描述
根据元素取出排名
在这里插入图片描述

zincrby

在这里插入图片描述
给指定的元素增加 incrment 的值

在这里插入图片描述
增加后会重新进行排名

zunionstore

在这里插入图片描述

取集合的并集,对于集合中都存在的元素,对于分值的处理,可以取最小值/最大值/和
默认是求和

在这里插入图片描述

在这里插入图片描述
权重weights ,这里k1是1 k2是0.5

在这里插入图片描述
取最小的

zinterstore

在这里插入图片描述
取交集
weights:权重
aggregate:取大、小或者求和

在这里插入图片描述
这里是 k1权重为1 k2权重为2 方式是取最大值

排序是怎么实现的,增删改查的速度

skip list 跳跃表
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龘龍龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值