Redis不同类型操作

本文介绍了Redis不同类型操作。Redis遵循BSD协议开源,采用内存持久化,是非关系型数据库。它将数据分为热数据和冷数据,有诸多优点,但数据库容量受物理内存限制。还详细阐述了String、List、Hash、Set、SortedSet等类型的操作方法,如增删改查等。

Redis不同类型操作

遵循BSD协议开源,内存持久化,非关系型结构化查询语句

datapage分割文件 4k id 磁盘 root根

index索引 4k 磁盘 node枝

B+红黑树 内存 leaf叶

Redis将数据分为

热数据 经常使用的数据 内存

冷数据 不经常使用的数据 磁盘

第一次在服务器登录的用户会经过程序,由程序寻找用户信息,若找到,则将用户信息存入内存中,内存会设置过期时间来清理内存

Redis key是二进制安全的,可以放入任何字符,键值莫要太长(耗内存),莫要太短(可读性差)

Redis优点

性能极高 – Redis能支持超过 100K+ 每秒的读写频率。

丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。

原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。

丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

Redis的缺点

是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。

String类型

字符串类型的内部编码有3种:

​ int:8个字节的长整型。

​ embstr:小于等于39个字节的字符串。

​ raw:大于39个字节的字符串。

Redis会根据当前值的类型和长度决定使用哪种内部编码实现

string 时间系列(无)

keys * 获取所有

setnx 只允许创建操作,没有的时候可以写入 set k1 ooxx

xx 覆盖原有的k1内容,set k1 ooxx xx

type k1 判断k1类型

OBJECT encoding k1 贴标签给输入数据,看是否符合运算

MSET key value [key value …] 设置多个键的字符串值 mest k2 5 k3 6

MSETNX key value [key value …] 键不存在时,设置字符串值 注意是原子操作,对多个kv,要不成功都失败

查找键 KEYS pattern

pattern取值

* 任意长度字符

? 任意一个字符

keys ? ?代表获取一个字符 keys ?表示只查找一个字符的k名称, eg:k

​ keys ?? 表示查找2个字符的k名称,eg:k1,k2…

[] 字符集合,表示可以是集合中的任意一个

strlen k1 标明k1的长度

flushall 清掉所有的数据库

flushDB 清掉当前的数据库

数据库编号从0-15,共计16个数据库,进入1号数据库 redis-cli -n 1

在UTF-8的语言环境下,redis-cli --raw 文件中文字符可以显示

EXISTS key 键是否存在

RENAME key newkey 键重命名

RENAMENX key newkey 键重命名

DEL key [key …] 键删除

MGET key [key …] 获取多个给定的键的值

GETSET key value 返回旧值并设置新值,如果键不存在,就创建并赋值

APPEND key value 追加字符串,如果键存在就追加;如果不存在就等同于SET key value

127.0.0.1:6379> APPEND k1 123456789
(integer) 12
127.0.0.1:6379> get k1
“abc123456789”
127.0.0.1:6379> GETRANGE k1 3 -1 截取从第4个字符到最后一个字符

正反都可以取 ,开始的下标是0,末尾的下标是-1

步长1的增减 INCR key DECR key

步长n的增减 INCRBY key n DECRBY key n

步长0.5的增减 INCRBYFLOAT key 0.5

位操作

BITOP 对一个或多个二进制的字符串key进行位运算,并保存在destkey上

operation 可以是AND、OR、NOT、XOR

列表 List

LPUSH abcdef --> LRANGE/LPOP fedcba 先进后出,后进先出

LPUSH abcdef --> RPOP abcdef 先进先出

从列表头部开始删除值等于value的元素count次,LIST 可以重复出现

LREM key count value

count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count

count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值

count = 0 : 移除表中所有与 value 相等的值

LTRIM key start stop 去掉start和stop之外的元素

LINSERT key BEFORE|AFTER pivot value 在列表中某个存在的值(pivot)前或后插入元素

key和pivot不存在,不进行任何操作

阻塞:BLPOP,谁先阻塞的谁先解放 BLPOP 0 一直阻塞、 BLPOP 3 三秒后解除阻塞

Hash散列

一个K得到多个信息,kv间有关联,节省内存空间,(数据段时间段轮询删除)

不适合用hash散列进行二进制操作,命令达不到完全处理的要求

(k过期)主动删除散列中信息,从头到尾找冷数据,删掉。 耗时,耗费空间

(k过期)被动删除,当请求寻找冷数据时,发现过期删掉 占用内存

设置单个字段 HSET key field value

设置多个字段 HMSET key field value [field value …]

返回字段个数 HLEN key

判断字段是否存在 HEXISTS key field key或者field不存在,返回0

返回字段值 HGET key field

返回多个字段值 HMGET key field [field …]

返回所有的键值对 HGETALL key

返回所有字段名 HKEYS key

返回所有值 HVALS key

在字段对应的值上进行整数的增量计算 HINCRBY key field increment

在字段对应的值上进行浮点数的增量计算 HINCRBYFLOAT key field increment

删除指定的字段 HDEL key field [field …]

集合

–set

无序的,去重的,字符串类型,最多包含2^32-1元素不能按照下标索引删除

增加一个或多个元素 SADD key member [member …] 如果元素已经存在,则自动忽略

移除一个或者多个元素 SREM key member [member …] 元素不存在,自动忽略

返回集合包含的所有元素 SMEMBERS key

返回集合中元素的个数 SCARD key

把元素从源集合移动到目标集合 SMOVE source destination member

检查给定元素是否存在于集合中 SISMEMBER key member

随机返回集合中指定个数的,适合抽奖 SRANDMEMBER key [count]

​ 如果 count 为正数,且小于集合基数,那么命令返回一个包含 count 个元素的数组,数组中的元素各不相同。如果 count 大于等于集合基数,那么返回整个集合 最多返回整个集合 conut>=0

​ 如果 count 为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为 count 的绝对值 count < 0 长度为count绝对值,元素可能重复

​ 如果 count 为 0,返回空

​ 如果 count 不指定,随机返回一个元素

差集,具有方向性

​ SDIFF key [key …] 从第一个key的集合中去除其他集合和自己的交集部分

​ SDIFFSTORE destination key [key …] 将差集结果存储在目标key中

交集

​ SINTER key [key …],取所有集合交集部分

​ SINTERSTORE destination key [key …],将交集结果存储在目标key中

并集

​ SUNION key [key …],取所有集合并集

​ SUNIONSTORE destination key [key …],将并集结果存储在目标key中

SorteSet有序集合

有序的、去重的、字符窜类型、最多包含2^32-1元素、每一个元素都关联着一个浮点数分值(Score),并按照分值从小到大的顺序排列集合中的元素。分值可以相同

增加一个或多个元素 ZADD key score member [score member …] 如果元素已经存在,则使用新的score

移除一个或者多个元素 ZREM key member [member …]

显示分值 ZSCORE key member

增加或者减少分值 ZINCRBY key increment member increment为负数就是减少

​ ZINCRBY fruits 1.5 西瓜 值在原有的基础上增加1.5

返回元素的排名(索引) ZRANK key member

返回元素的逆序排名 ZREVRANK key member

返回指定索引区间元素 ZRANGE key start stop [WITHSCORES] 默认按照score从小到大

返回指定索引区间元素 ZREVRANGE key start stop [WITHSCORES]

返回指定范围中元素的个数 ZCOUNT key min max 分值score之内

返回指定分值区间元素(无,百度)

移除指定排名范围的元素 ZREMRANGEBYRANK key start stop

移除指定分值范围的元素 ZREMRANGEBYSCORE key min max

返回集合中元素个数 ZCARD key

并集、交集(ppt 89)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值