Redis 基本api操作
1. redis五大数据类型
1.1 Key(不是五大数据类型,但是是最基础的)
keys *
查看所有的key
set key value
将字符串值 value 关联到 key 。
EXISTS key
判断当前的key是否存在
若 key 存在,返回 1 ,否则返回 0
MOVE key db
将当前数据库的 key 移动到给定的数据库 db 当中。
EXPIRE key seconds
为给定 key 设置生存时间,当 key 过期时(生存时间为 0 ),它会被自动删除。
TTL key
- 以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。
不存在的 key: -2 - key 存在,但没有设置剩余生存时间:-1
- 有剩余生存时间的 key: 剩余时间
TYPE key
返回 key 所储存的值的类型。
1.2 String
SET key value [EX seconds] [PX milliseconds] [NX|XX]
-
如果 key 已经持有其他值, SET 就覆写旧值,无视类型。
-
对于某个原本带有生存时间(TTL)的键来说, 当 SET 命令成功在这个键上执行时, 这个键原有的 TTL 将被清除
-
EX second :设置键的过期时间为 second 秒。
-
PX millisecond :设置键的过期时间为 millisecond 毫秒。
-
NX :只在键不存在时,才对键进行设置操作。
-
XX:只在键已经存在时,才对键进行设置操作。
-
对象 set user:1 {name:zhangsan,age:3}
-
设置一个user:1 对象 值为 json字符来保存一个对象!
-
这里的key是一个巧妙的设计: user:{id}:{filed} , 如此设计在Redis中是完全OK了!
APPEND key value
- 如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。
- 如果 key 不存在, APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value 一样。
STRLEN key
- 返回
key
所储存的字符串值的长度 - 当
key
储存的不是字符串值时,返回一个错误。
INCR、DECR key
- 将
key
中储存的数字值增一、减一 - 如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR、DECR 操作。
- 如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
INCRBY key increment
- 将 key 所储存的值加上增量 increment 。
- 如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCRBY 命令。
- 如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
GETRANGE key start end
- 返回 key 中字符串值的子字符串,字符串的截取范围由 start 和 end 两个偏移量决定(包括 start 和 end 在内)。
- 负数偏移量表示从字符串最后开始计数, -1 表示最后一个字符, -2 表示倒数第二个,以此类推。
MSET key value [key value …]
- 同时设置一个或多个 key-value 对。
- MSETNX,同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在
MGET key [key …]
- 返回所有(一个或多个)给定
key
的值。
SETRANGE key offset value
- 用 value 参数覆写(overwrite)给定 key 所储存的字符串值,从偏移量 offset 开始
- “abcdefg”
- SETRANGE key2 1 xx
- “axxdefg”
SETNX key value
-
将 key 的值设为 value ,当且仅当key 不存在。
-
若给定的 key 已经存在,则 SETNX 不做任何动作。
SETEX key seconds value
-
将值 value 关联到 key ,并将 key 的生存时间设为 seconds (以秒为单位)。
-
如果 key 已经存在, SETEX 命令将覆写旧值。
GETSET key value
- 将键 key 的值设为 value , 并返回键 key 在被设置之前的旧值。
1.3 List
LPUSH key value [value …]
- 将一个或多个值
value
插入到列表key
的表头
LRANGE key start stop
- 返回列表 key 中指定区间内的元素,区间以偏移量 start 和 stop 指定。
RPUSH key value [value …]
-
将一个或多个值 value 插入到列表 key 的表尾(最右边)。
-
如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表尾
LPOP key
- 移除并返回列表 key 的头元素。
RPOP key
- 移除并返回列表 key 的尾元素。
LINDEX key index
-
返回列表 key 中,下标为 index 的元素。
-
下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。
-
也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
LPUSH key value [value …]
-
将一个或多个值 value 插入到列表 key 的表头
-
如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表头
LLEN key
- 返回列表 key 的长度。
LREM key count value
根据参数 count 的值,移除列表中与参数 value 相等的元素。
count 的值可以是以下几种:
- count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count 。
- count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值。
- count = 0 : 移除表中所有与 value 相等的值。
LTRIM key start stop
-
对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
-
举个例子,执行命令 LTRIM list 0 2 ,表示只保留列表 list 的前三个元素,其余元素全部删除。
-
下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。
-
也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
-
当 key 不是列表类型时,返回一个错误。
RPOPLPUSH source destination
- 移除列表的最后一个元素,将他移动到新的列表中
LSET key index value
-
将列表 key 下标为 index 的元素的值设置为 value 。
-
当 index 参数超出范围,或对一个空列表( key 不存在)进行 LSET 时,返回一个错误。
LINSERT key BEFORE|AFTER pivot value
- 将值 value 插入到列表 key 当中,位于值 pivot 之前或之后。
- 当 pivot 不存在于列表 key 时,不执行任何操作。
- 当 key 不存在时, key 被视为空列表,不执行任何操作。
- 如果 key 不是列表类型,返回一个错误。
1.4 Set
SADD key member [member …]
-
将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。
-
假如 key 不存在,则创建一个只包含 member 元素作成员的集合。
SISMEMBER key member
- 判断 member 元素是否集合 key 的成员。
SMEMBERS key
-
返回集合 key 中的所有成员。
-
不存在的 key 被视为空集合。
SCARD key
- 返回集合 key 的基数(集合中元素的数量)。
SREM key member [member …]
- 移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略
SRANDMEMBER key [count]
- 如果命令执行时,只提供了 key 参数,那么返回集合中的一个随机元素。
SMOVE source destination member
- 将 member 元素从 source 集合移动到 destination 集合。
数字集合类:
- 差集 SDIFF 返回第一个有第二个没有的数据
- 交集 SINTER 返回两个共有的数据
- 并集 SUNION 返回两个合并后的结果
SDIFF key [key …]
-
返回一个集合的全部成员,该集合是所有给定集合之间的差集。
-
SDIFF key1 key2 返回key1有但是key2没有的数据集
1.5 Hash
Map集合,key-map! 时候这个值是一个map集合! 本质和String类型没有太大区别,还是一个简单的key-vlaue!
hash变更的数据 user name age,尤其是是用户信息之类的,经常变动的信息!
hash 更适合于对象的存储,String更加适合字符串存储!
简单的来讲:hash就是套娃…
HMSET key field value [field value …]
-
同时将多个 field-value (域-值)对设置到哈希表 key 中。
-
此命令会覆盖哈希表中已存在的域。
-
如果 key 不存在,一个空哈希表被创建并执行 HMSET 操作。
HMGET key field [field …]
-
返回哈希表 key 中,一个或多个给定域的值。
-
如果给定的域不存在于哈希表,那么返回一个 nil 值。
HGETALL key
-
返回哈希表 key 中,所有的域和值。
-
在返回值里,紧跟每个域名(field name)之后是域的值(value),所以返回值的长度是哈希表大小的两倍。
-
域
-
值
HDEL key field [field …]
- 删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略。
HLEN key
- 返回哈希表 key 中域的数量。
HEXISTS key field
- 查看哈希表 key 中,给定域 field 是否存在。
HKEYS key
- 返回哈希表 key 中的所有域。
HVALS key
- 返回哈希表 key 中所有域的值。
HINCRBY key field increment
-
为哈希表 key 中的域 field 的值加上增量 increment 。
-
增量也可以为负数,相当于对给定域进行减法操作。
-
如果 key 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。
-
如果域 field 不存在,那么在执行命令前,域的值被初始化为 0 。
1.6 Zset(SortedSet 有序集合)
Redis Sorted Sets are, similarly to Redis Sets, non repeating collections of Strings. The difference is that every member of a Sorted Set is associated with a score, that is used keep the Sorted Set in order, from the smallest to the greatest score. While members are unique, scores may be repeated.
多了个scores 可以用来排序
ZADD key score member [[score member] [score member] …]
-
将一个或多个 member 元素及其 score 值加入到有序集 key 当中。
-
如果某个 member 已经是有序集的成员,那么更新这个 member 的 score 值,并通过重新插入这个 member 元素,来保证该 member 在正确的位置上。
-
score 值可以是整数值或双精度浮点数。
-
如果 key 不存在,则创建一个空的有序集并执行 ZADD 操作。
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
-
返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列。
-
具有相同 score 值的成员按字典序(lexicographical order)来排列(该属性是有序集提供的,不需要额外的计算)。
-
可选的 LIMIT 参数指定返回结果的数量及区间(就像SQL中的 SELECT LIMIT offset, count ),注意当 offset 很大时,定位 offset 的操作可能需要遍历整个有序集,此过程最坏复杂度为 O(N) 时间。
-
可选的 WITHSCORES 参数决定结果集是单单返回有序集的成员,还是将有序集成员及其 score 值一起返回。
-
min 和 max 可以是 -inf 和 +inf,这样一来,你就可以在不知道有序集的最低和最高 score 值的情况下,使用 ZRANGEBYSCORE 这类命令。
ZRANGE key start stop [WITHSCORES]
-
返回有序集 key 中,指定区间内的成员。
-
其中成员的位置按 score 值递增(从小到大)来排序。
-
具有相同 score 值的成员按字典序(lexicographical order )来排列。
-
如果你需要成员按 score 值递减(从大到小)来排列,请使用 ZREVRANGE 命令。
-
下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表示有序集第二个成员,以此类推。
-
也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。
-
可以通过使用 WITHSCORES 选项,来让成员和它的
score
值一并返回,返回列表以value1,score1, ..., valueN,scoreN
的格式表示。客户端库可能会返回一些更复杂的数据类型,比如数组、元组等。
ZCARD key
- 返回有序集 key 的基数。
ZCOUNT key min max
- 返回有序集 key 中, score 值在 min 和 max 之间(默认包括 score 值等于 min 或 max )的成员的数量。
- min 和 max 可以是 -inf 和 +inf