redis常用数据类型
1、string
string数值bitmap 2、list3、hash4、set5、zset keys和scan redis常用数据类型
这里只说常用的几种数据类型,redis是以k v键值对的形式存储数据,数据类型针对的都是v来说的。redis数据是以字节存储的
通过type命名可查看key的类型,object encoding查看key内部存储数据的类型
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
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存在才插入
是以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 ...]
默认按照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匹配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 的游标时, 表示迭代已结束