欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

redis数据类型

时间:2023-07-08
文章目录

redis常用数据类型

1、string

string数值bitmap 2、list3、hash4、set5、zset keys和scan 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 abcdefgSETRANGE k1 3 xget k1"abcxefg"SETRANGE k1 3 xxxxget 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 1setbit k1 9 1

这两条指令的意思是

setbit k1 0 1setbit k1 3 1setbit k1 5 1setbit k1 7 1setbit k2 1 1setbit k2 3 1setbit k2 6 1BITOP 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 e127.0.0.1:6379> ZLEXCOUNT myzset - +(integer) 5127.0.0.1:6379> ZLEXCOUNT myzset [b [d(integer) 3

ZPOPMAX key [count]

zadd k1 1 a 2 b 3 c 4 d(integer) 4127.0.0.1:6379> ZPOPMAX k1 21) "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) 2127.0.0.1:6379> ZRANGE k1 0 -1 withscores1) "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 d127.0.0.1:6379> ZRANGEBYSCORE k1 1 31) "a"2) "b"3) "c"127.0.0.1:6379>

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

zadd k1 1 a 2 b 3 c 4 d127.0.0.1:6379> ZRANK k1 b(integer) 1127.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 51) "17"2) 1) "key:12" 2) "key:8" 3) "key:4" 4) "key:14" 5) "key:16"

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

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。