redis数据类型

redis常用数据类型

这里只说常用的几种数据类型,redis是以k v键值对的形式存储数据,数据类型针对的都是v来说的。redis数据是以字节存储的
通过type命名可查看key的类型,object encoding查看key内部存储数据的类型

1、string

string又可以具体分为string,数值,bitmap三种

string

value是string类型,type 查看key 结果是 string,object ecoding 查看key 结果是 emdstr
SET key value [EX seconds] [PX milliseconds] [NX|XX]
SETRANGE key offset value

set k1 abcdefg
SETRANGE k1 3 x
get k1
"abcxefg"
SETRANGE k1 3 xxxx
get k1
"abcxxxx"

SETEX key seconds value 单位 s
PSETEX key milliseconds value单位 ms
SETNX key value
GET key
APPEND key value
GETRANGE key start end 闭区间
GETSET key value
MSET key value [key value ...]
STRLEN key

数值

type查看key 结果是 string ,object ecoding 查看key 结果是 int
好处是可以有一些计算操作,避免一些错误
DECR key
DECRBY key decrement
INCR key
INCRBY key increment
INCRBYFLOAT key increment

bitmap

type查看key 结果是 string ,object ecoding 查看key 结果是 raw
SETBIT key offset value
GETBIT key offset
BITCOUNT key [start end] start和end指的是位
BITPOS key bit [start] [end] start和end指的是字节
BITOP operation destkey key [key ...] operation: and(与) or(或) xor(异或) not(非)

setbit k1 0 1
setbit k1 9 1

这两条指令的意思是
在这里插入图片描述

setbit k1 0 1
setbit k1 3 1
setbit k1 5 1
setbit k1 7 1
setbit k2 1 1
setbit k2 3 1
setbit k2 6 1
BITOP and k3 k1 k2

在这里插入图片描述

2、list

可以重复、存入有顺序,像数据结构中的数组
BLPOP key [key ...] timeout
当多个客户端阻塞同一个key,结果会FIFO,类似单播
LLEN key
LINSERT key BEFORE|AFTER pivot value
LINDEX key index
BRPOPLPUSH source destination timeout 阻塞
BRPOP key [key ...] timeout 阻塞
LRANGE key start stop
LREM key count value
count > 0: 从头往尾移除值为 value 的元素。
count < 0: 从尾往头移除值为 value 的元素。
count = 0: 移除所有值为 value 的元素。
LSET key index value
LPOP key
LPUSH key value [value ...]
LPUSHX key value key存在才插入
LTRIM key start stop
RPOP key
RPOPLPUSH source destination
RPUSH key value [value ...]
RPUSHX key value key存在才插入

3、hash

是以k v键值对存储,像map数据结构

4、set

元素去重,无序
SADD key member [member ...]
SCARD key 统计数量
SISMEMBER key member
SMEMBERS key
SMOVE source destination member
SPOP key [count] 返回并移除元素,可指定count个数
SRANDMEMBER key [count] 返回但不移除元素,可指定count个数
SREM key member [member ...]
SDIFF key [key ...] 差集
SDIFFSTORE destination key [key ...]
SINTER key [key ...]交集
SDIFF destination key [key ...]
SUNION key [key ...]并集
SUNION destination key [key ...]

5、zset

默认按照score值从小到大排序
ZADD key [NX|XX] [CH] [INCR] score member [score member ...]
ZCARD key 统计数量
ZCOUNT key min max 统计指定score范围的数量
ZINCRBY key increment member
ZLEXCOUNT key min max 要求score相同,成员按字典序排列,返回范围成员类的数量,- +代表头和尾,min max是成员 必须以[开头

ZADD myzset 0 a 0 b 0 c 0 d 0 e
127.0.0.1:6379> ZLEXCOUNT myzset - +
(integer) 5
127.0.0.1:6379> ZLEXCOUNT myzset [b [d
(integer) 3

ZPOPMAX key [count]

zadd k1 1 a 2 b 3 c 4 d
(integer) 4
127.0.0.1:6379> ZPOPMAX k1 2
1) "d"
2) "4"
3) "c"
4) "3"
127.0.0.1:6379>

ZPOPMIN key [count]
ZRANGE key start stop [WITHSCORES]

zadd k1 1 a 2 b 3 c 4 d
(integer) 2
127.0.0.1:6379> ZRANGE k1 0 -1 withscores
1) "a"
2) "1"
3) "b"
4) "2"
5) "c"
6) "3"
7) "d"
8) "4"
127.0.0.1:6379>

ZRANGEBYLEX key min max [LIMIT offset count] score必须相同 按字典序排序
ZREVRANGEBYLEX key max min [LIMIT offset count] score必须相同 按字典序倒序
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] min 和 max代表score

zadd k1 1 a 2 b 3 c 4 d
127.0.0.1:6379> ZRANGEBYSCORE k1 1 3
1) "a"
2) "b"
3) "c"
127.0.0.1:6379>

ZRANK key member 返回排序集合的索引

zadd k1 1 a 2 b 3 c 4 d
127.0.0.1:6379> ZRANK k1 b
(integer) 1
127.0.0.1:6379>

ZREM key member [member ...] 删除元素
ZREMRANGEBYLEX key min max 删除名称按字典由低到高排序成员之间所有成员 min和max是成员 以[开头 ,- +代表头尾
ZREMRANGEBYRANK key start stop 根据排序后的索引删除
ZREMRANGEBYSCORE key min max 根据score删除
ZREVRANGE key start stop [WITHSCORES] 其中成员的位置按score值递减(从大到小)来排列
ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]
ZREVRANK key member 获得成员按score值递增(从小到大)排列的索引
ZSCORE key member 获取成员member的score值
ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight] [SUM|MIN|MAX]
ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight] [SUM|MIN|MAX]交集
ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight] [SUM|MIN|MAX]并集
在这里插入图片描述

keys和scan

使用keys匹配key会造成阻塞,生产中建议使用scan
SCAN cursor [MATCH pattern] [COUNT count]

SCAN 0 match * count 5
1) "17"
2)  1) "key:12"
    2) "key:8"
    3) "key:4"
    4) "key:14"
    5) "key:16"

17是返回的游标,当服务器向用户返回值为 0 的游标时, 表示迭代已结束

Redis支持多种数据类型,包括string、hash、list、set和sorted set等。其,string是最基本、最简单的数据类型,用于存储字符串。 Hash是用于存储键值对的数据结构,其的value只能存储字符串,不允许存储其他数据类型,也不存在嵌套现象。每个hash可以存储232 - 1个键值对,并可以灵活添加或删除对象属性。但需要注意的是,hash类型并不适合存储大量对象,也不应该将hash作为对象列表使用,因为遍历整体数据的效率可能会较低。 除了string和hash类型,Redis还支持list、set和sorted set等数据类型。List是一个有序的字符串列表,可以进行插入、删除和查找等操作。Set是一个无序的字符串集合,可以进行元素的添加、删除和查找操作,并且不允许重复元素的存在。Sorted Set是一个有序的字符串集合,每个元素都有一个对应的score,可以根据score进行排序和范围查找。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Redis 数据类型](https://blog.csdn.net/weixin_52851967/article/details/122670564)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值