status
Published
slug
redis-command-learning-note
type
Post
category
Technology
date
Mar 20, 2024 → Mar 21, 2024
tags
笔记
Redis
summary
记录一些Redis指令,学习实操,加深印象
记录一些Redis指令,学习实操,加深印象。Redis在线练习网站:https://try.redis.io/
DECR, DECRBY, DEL, EXISTS, EXPIRE, GET, GETSET, HDEL, HEXISTS, HGET, HGETALL, HINCRBY, HKEYS, HLEN, HMGET, HMSET, HSET, HVALS, INCR, INCRBY, KEYS, LINDEX, LLEN, LPOP, LPUSH, LRANGE, LREM, LSET, LTRIM, MGET, MSET, MSETNX, MULTI, PEXPIRE, RENAME, RENAMENX, RPOP, RPOPLPUSH, RPUSH, SADD, SCARD, SDIFF, SDIFFSTORE, SET, SETEX, SETNX, SINTER, SINTERSTORE, SISMEMBER, SMEMBERS, SMOVE, SORT, SPOP, SRANDMEMBER, SREM, SUNION, SUNIONSTORE, TTL, TYPE, ZADD, ZCARD, ZCOUNT, ZINCRBY, ZRANGE, ZRANGEBYSCORE, ZRANK, ZREM, ZREMRANGEBYSCORE, ZREVRANGE, ZSCORE
- 为什么Redis中使用
INCR
,而不通过下面的代码去修改数据 - 上面的指令只能在一个单个客户端使用,当同时有两个客户端去操作x的时候,有可能会发生数据修改异常的问题(数据应加两次,但是只加了一次),原因是上面的代码不是原子操作(atomic operation)
INCR
是原子操作,不需要考虑并发问题- 所有由单个命令实现的 Redis 操作都是原子操作,包括在更复杂的数据结构上操作的操作。因此,当您使用修改某些值的 Redis 命令时,不必考虑并发访问
- 通过
EXPIRE
和TTL
命令(单位为秒)以及类似的PEXPIRE
和PTTL
命令(单位为毫秒),可以实现key在Redis中存在一定时间 EXPIRE
设置过期时间TTL
查询key的过期时间- 正数意味着过期时间,
-2
表示key不存在,-1
表示key永远不会过期 - 每一次
SET
之后,都会重置它的TTL
(变回-1
) PERSIST
可以重新把key设置为永不过期
- Redis中的list操作:与列表进行交互的一些重要命令包括
RPUSH
、LPUSH
、LLEN
、LRANGE
、LPOP
和RPOP
。您可以立即开始使用作为列表的键,只要它不是以其他类型存在。 RPUSH
向list的末尾添加元素,返回list的长度LPUSH
向list的开头添加元素,返回list的长度LRANGE
返回list的子集(下标从0开始),负数表示倒数的下标LPOP
、RPOP
从list的开头/结尾中移除元素,返回元素的值LLEN
返回list的长度RPUSH
、LPUSH
支持多变参数,可以一次加入多个元素,返回list的长度
在Redis中不需要事先创建键就可以向其添加内容,直接使用命令添加新元素即可 1)作为副作用的key将被创建,如果它不存在。 2)在执行某个命令后将导致为空的key将自动从键空间中删除。
- Redis中的set操作:集合没有特定的顺序,每个元素只能出现一次。与集合进行交互的一些重要命令是
SADD
、SREM
、SISMEMBER
、SMEMMBERS
和SUNION
。 SADD
向set中添加元素,返回成功添加入set的元素数- 当set中存在当前要添加的元素时,返回0,反之返回成功添加入set的元素数
SREM
从集合中移除给定的成员,返回1或0以表示该成员是否确实存在。SISMEMBER
测试当前值是否在set中,返回1或0以表示该成员是否存在。SMEMMBERS
返回集合中的所有元素SUNION
合并两个或多个集合,返回合并得到的所有元素SPOP
从集合中随机取出指定数量的元素,返回的元素会从集合中删除- 类似于 LPOP 和 RPOP 的命令,以便从集合中提取元素并在单个操作中将它们返回给客户机。
- 由于集合不是有序的数据结构,
SPOP
返回(和删除)的元素是完全随意的。 SRANDMEMBER
可以随机从集合中取出指定数量的元素,但是不删除元素- 指定数量为正(n)时,若大于集合总数(m),也只能返回相同的数量(m)
- 指定数量为负(-n)时,若绝对值大于集合总数(m),会从集合中返回重复的数(n)
- Redis中的zset操作:Redis1.2中引入了有序集合,在添加元素的时候可以指定一个score,这个score会用于元素的排序,默认顺序为递增排序。与有序集合进行交互的一些重要命令是
ZADD
,ZCARD
,ZCOUNT
,ZINCRBY
,ZRANGE
,ZRANGEBYSCORE
,ZRANK
,ZREM
,ZREMRANGEBYSCORE
,ZREVRANGE
,ZSCORE
ZADD
向zset中添加元素,返回成功添加入set的元素数- 当添加的元素已存在时,
ZADD
返回0,更新元素的score ZRANGE
从zset中取出给定下标范围内的元素(下标从0开始),负数表示倒数的下标ZCOUNT
统计集合中在给定score范围内的元素个数ZCARD
返回所给出的集合的集合基数(元素数),若该集合不存在,返回0ZINCRBY
向集合中指定的元素的score添加增量,若该元素不存在,直接从零开始添加,返回最新的scoreZRANGEBYSCORE
从zset中取出指定score范围内的元素ZRANK
获取指定元素在zset中的排名(从0开始),若指定元素不存在返回nilZSCORE
获取指定元素在zset中的score(float),若指定元素不存在返回nilZREM
从zset中移除指定元素,返回移除的元素个数ZREMRANGEBYSCORE
从zset中移除指定score范围内的元素,返回移除的元素个数ZREVRANGE
可以看成是ZRANGE的逆序版本
- Redis中的hash操作,重要的指令有
HDEL
,HEXISTS
,HGET
,HGETALL
,HINCRBY
,HKEYS
,HLEN
,HMGET
,HMSET
,HSET
,HVALS
。hash是字符串字段和字符串值之间的映射,是表示对象的完美数据类型(例如: 具有诸如名称、姓氏、年龄等字段的 User) HSET
用于设置键值对,如果创建了新字段,返回1;如果该字段已经存在,HSET
更新该值,且返回0;HMSET
可以同时设置多个字段HGET
用于获取指定键的值,不存在则返回nilHMGET
可以同时获取多个指定key的值,不存在则返回nilHGETALL
可以获取hash中的所有键值对HINCRBY
可以对键值对值类型为数值型的元素进行递增,返回操作后的新值,HINCRBY
支持的值范围限制为64位有符号的整数HDEL
删除指定key的键值对HLEN
获取hash的长度HKEYS
获取hash中的key列表HVALS
获取hash中的value列表HEXISTS
用于检测key是否存在hash中,若存在返回1,反之返回0