使用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 valueBITCOUNT 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 keytips:结合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进阶:事务|过期|缓存|排序|空间节省