redis五种数据类型及相关命令

使用redis-cli连接redis时的命令集

最近在学习使用redis,简单记录下,如有问题,请各位路过的大佬留言~

redis的启动/禁用/连接

启动redis
redis-server --port 6379
–port:设置启动端口为6379
停止redis
redis-cli SHUTDOWN 或者 kill redis进程的pid
连接redis
redis-cli -c -h 1.2.3.4 -p 6379 -a 123456
-c:连接集群 -h:host redis的ip -p:port 端口 -a:auth 密码
测试连接是否正常
ping
正常则回复pong
配置redis
CONFIG SET key value
设置key的值为value
获取符合规则的键名列表(需遍历数据库中所有的键,影响性能,生产环境很少使用)
KEYS pattern
pattern支持glob风格通配符:
? 匹配一个字符
* 匹配任意个字符
[] 匹配括号中任意字符,可使用-表示一个范围,例: a[a-b] 匹配 aa,ab
\x 匹配字符x,用于转义符号
获取键类型
TYPE bar
返回值可为:string(字符串类型) hash(散列类型) list(列表类型) set(集合类型) zset(有序集合类型)

五种类型之间不能相互嵌套!!!
redis所有命令均持有原子性!!!

字符串相关命令

一个字符串类型键允许存储数据的最大容量为512M

判断一个键是否存在

EXISTS bar
存在返回1,不存在返回0

删除一个或多个键

DEL bar
不支持通配符
小技巧:删除所有"user:"开头的键: redis-cli KEYS “user:*” | xargs redis-cli DEL
或者: redis-cli DEL ‘redis-cli KEYS “user:*”’ 后者性能更好

赋值

SET key value

取值

GET key

递增数字

INCR key
如果key为整数形式 1 则key自增1为2 返回2 如果不存在key 默认为0

增加指定的整数

INCRBY key int
将整数key加上int

递减数字

DECR key

减少指定的整数

DECRBY key int

增加指定浮点数

INCRBYFLOAT key float

向尾部追加值

APPEND key value
如果需要追加空格 value需要加""双引号

获取字符串长度

STRLEN key

同时获得/设置多个键值

MSET key1 v1 key2 v2
MGET key1 key2

位操作

GETBIT key offset
获取key二进制位结构中索引为offset的二进制位的值 索引从0开始 索引超出长度 默认0
SETBIT key offset value

BITCOUNT key [start] [end]
获取字符串类型键中值是1的二进制位个数 通过start,end 限制统计的字节范围

BITOP poeration destkey key

散列类型相关命令

散列类型最多容纳 (232-1) 个元素

设置/获取 散列值

HSET key field value
HGET key field

HMSET key field1 value1 field2 value2
HMGET key field1 field2

HGETALL key

判断字段是否存在

HEXISTS key field

当字段不存在时赋值,如果已存在,不执行操作(NX: not e xist)

HSETNX key field value

增加数字

HINCRBY key field increment
与字符串类型 INCRBY类似,但是散列没有 HINCR命令

删除字段

HDEL key field1 field2

只获取字段名或字段值

HKEYS key
HVALS key

获得字段数量

HLEN key

列表类型相关命令

内部为双向链表实现,获取越接近两端的元素速度越快
代价是通过索引访问元素较慢
最多容纳 (232-1) 个元素

向列表两端增加元素

向左添加,完成后数据结构value2在value1左边
LPUSH key value1 value2
向右添加,完成后数据结构value2在value1右边
RPUSH key value1 value2

从列表两端弹出元素(1:移除左边/右边第一个元素,2:返回被移除的元素)

LPOP key
RPOP key

  tips:结合LPUSH和LPOP,或者RPUSH和RPOP可把列表当作栈
  	   结合LPUSH和RPOP,或者RPUSH和LPOP可把列表当作队列
获取列表中元素的个数

LLEN key

获取列表片段,起始索引为0,包含两端的元素

LRANGE key start stop
支持负索引,-1表示最右边第一个元素
LRANGE key 0 -1 表示所有元素,如果stop大于实际索引范围,则返回到最右边元素

删除列表中指定的值

LREM key count value
删除前count个值为value的元素(count大于0从左边开始,小于0从右边开始,等于0删除所有)

获得/设置指定索引的元素值(支持负索引)

LINDEX key index
LSET key index value

只保留列表指定片段,指定范围方法和LRANGE相同

LTRIM key start end

向列表中插入元素

LINSERT key BEFORE|AFTER pivot value
从左到右找值为pivot的元素,根据第二个之为 BEFORE|AFTER 决定将value插入到改元素的前面还是后面

将元素从一个列表转移到另一个列表

RPOPLPUSH source destination
从source列表右边弹出一个元素,然后将其加入到destination列表左边,并返回这个元素的值

集合类型相关命令

无序且元素不重复
散列表的存储结构
最多容纳 (232-1) 个元素

增加/删除元素,如 已/不 存在,则忽略元素

SADD key member1 member2
SREM key member1 member2

获得集合中的所有元素

SMEMBERS key

判断元素是否在集合中

SISMEMBER key member

集合间的运算

差集运算,所有属于key1且不属于key2的元素的集合,如有key3,则用key1和key2的结果集与key3运算
SDIFF key1 key2

交集运算,所有属于key1且属于key2的元素的集合
SINTER key1 key2

并集运算,所有属于key1或属于key2的元素的集合
SUNION key1 key2

进行集合运算并将结果存储(运算方法同上)

SDIFFSTORE destination key1 key2
SINTERSTORE destination key1 key2
SUNIONSTORE destination key1 key2

获得集合中元素个数

SCARD key

随机获得集合中的元素

SRANDMEMBER key [count]
count为正数,元素不重复 为负数,元素可能重复

随机弹出一个元素(弹出会进行删除操作)

SPOP key

有序集合类型相关命令

为每个元素都关联了一个分数
使用散列表跳跃表实现的,读取位于中间部分的数据也很快
缺点:比列表类型更耗费内存

增加元素
ZADD key score member
score对应分数(支持双精度浮点数),member元素值
score为+inf表示正无穷,-inf表示负无穷
获取元素分数
ZSCORE key member
获得排名在某个范围的元素列表
ZRANGE key start stop [WITHSCORES]
按元素分数 从小到大排序,返回索引(规则同LRANGE)start和stop之间所有元素
加上WITHSCORES可以同时获得元素的分数
如果分数相同,按字典顺序排序(“0”<“9”<“A”<“Z”<“a”<“z”)
从大到小排序时将 ZRANGE替换为 ZREVRANGE
获得指定分数范围的元素
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
按元素分数 从小到大的顺序返回分数在min和max(包含min,max)之间的元素
如果不包含端点值,分数前加"("符号,即 (min (max
支持无穷大 +inf -inf
WITHSCORES显示分数
LIMIT offset count 在前面结果列表的基础上,向后偏移offset个开始,获取前count个元素
从大到小ZREVRANGEBYSCORE
增加某个元素的分数
ZINCRBY key increment member
increment:增加的分数,减分为负数 member:元素值
获得集合中元素的数量
ZCARD key
获得指定分数范围内的元素个数
ZCOUNT key min max
min,max特性同ZRANGEBYSCORE
删除一个或多个元素
ZREM key member1 member2
按排名范围删除元素
ZREMRANGEBYRANK key start stop
从小到大排序,删除索引从start到stop的元素, 包含两端
按照分数范围删除元素
ZREMRANGEBYSCORE key min max
获得元素的排名
ZRANK key member
按分数 从小到大顺序获取指定元素排名
ZREVRANK命令 从大到小
计算有序集合的交集
ZINTERSTORE destination numkeys key [key] [WIGHTS weight [weight]] [AGGREGATE SUM|MIN|MAX]
计算多个有序集合的 交集并将结果存在destination键中(同样为有序集合)
destination键中元素的分数由AGGREGATE参数决定
SUM时(默认值),destination键中元素的分数是每个参与计算的集合中该元素分数的
MIN/ MAX,分数为每个参与计算的集合中该元素分数的 最小值/ 最大值
可以通过WIGHTS参数设置每个集合的 权重,每个集合在计算时元素的分数会被 乘上该集合的权重
计算有序集合的并集
ZUNIONSTORE
同上

结语

基础篇到此就结束了,后续会继续更新进阶篇并附上链接
参考书籍:Redis入门指南-第二版

进阶篇来啦~
redis进阶:事务|过期|缓存|排序|空间节省

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值