一、 Redis中常用的与数据库有关的指令
说明 : 使用redis的默认配置器动redis服务后,默认会存在16个库,编号从0-15
可以使用select 库的编号 来选择一个redis的库
- 清空当前的库 FLUSHDB
 - 清空全部的库 FLUSHALL
 - 1. DEL
 
二、 Redis中常用的与key相关的指令
语法 : DEL key [key ...]
作用 : 删除给定的一个或多个key 。不存在的key 会被忽略。
可用版本: >= 1.0.0
时间复杂度:
O(N),N 为被删除的key 的数量。
删除单个字符串类型的key ,时间复杂度为O(1)。
删除单个列表、集合、有序集合或哈希表类型的key ,时间复杂度为O(M),M为以上数据结构内的元素数量。
返回值: 被删除key 的数量。
- 2. EXISTS
 
语法: EXISTS key
作用: 检查给定key 是否存在。
可用版本: >= 1.0.0
时间复杂度: O(1)
返回值: 若key 存在,返回1 ,否则返回0 。
- 3. EXPIRE
 
语法: EXPIRE key seconds
作用: 为给定key 设置生存时间,当key 过期时(生存时间为0 ),它会被自动删除。
在Redis 中,带有生存时间的key 被称为『易失的』(volatile)。生存时间可以通过使用DEL 命令来删除整个key 来移除,或者被SET 和GETSET 命令覆写(overwrite),
这意味着,如果一个命令只是修改(alter) 一个带生存时间的key 的值而不是用一个新的key 值来代替(replace) 它的话,那么生存时间不会被改变。
比如说,对一个key 执行INCR 命令,对一个列表进行LPUSH 命令,或者对一个哈希表执行HSET 命令,这类操作都不会修改key 本身的生存时间。
另一方面,如果使用RENAME 对一个key 进行改名,那么改名后的key 的生存时间和改名前一样。RENAME 命令的另一种可能是,尝试将一个带生存时间的key 改名成另一个带生存时间的another_key这时旧的another_key (以及它的生存时间) 会被删除,然后旧的key 会改名为another_key ,因此,新的another_key 的生存时间也和原本的key 一样。使用PERSIST 命令可以在不删除key 的情况下,移除key 的生存时间,让key 重新成为一个『持久的』(persistent) key 。更新生存时间可以对一个已经带有生存时间的key 执行EXPIRE 命令,新指定的生存时间会取代旧的生存时间。过期时间的精确度在Redis 2.4 版本中,过期时间的延迟在1 秒钟之内——也即是,就算key 已经过期,但它还是可能在过期之后一秒钟之内被访问到,而在新的Redis 2.6 版本中,延迟被降低到1 毫秒之内。Redis 2.1.3 之前的不同之处
在Redis 2.1.3 之前的版本中,修改一个带有生存时间的key 会导致整个key 被删除,这一行为是受当时复制(replication) 层的限制而作出的,现在这一限制已经被修复。
可用版本: >= 1.0.0
时间复杂度: O(1)
返回值:设置成功返回1 。
- 4. KEYS
 
语法 : KEYS pattern
作用 : 查找所有符合给定模式pattern 的key 。
KEYS * 匹配数据库中所有key 。
KEYS h?llo 匹配hello ,hallo 和hxllo 等。
KEYS h*llo 匹配hllo 和heeeeello 等。
KEYS h[ae]llo 匹配hello 和hallo ,但不匹配hillo 。
特殊符号用 \ 隔开
注意: KEYS 的速度非常快,但在一个大的数据库中使用它仍然可能造成性能问题,如果你需要从一个数据集中查找特定的key ,你最好还是用Redis 的集合结构(set) 来代替。
可用版本: >= 1.0.0
时间复杂度: O(N),N 为数据库中key 的数量。
返回值: 符合给定模式的key 列表。
- 5. MOVE
 
语法 : MOVE key db
作用 : 将当前数据库的key 移动到给定的数据库db 当中。
如果当前数据库(源数据库) 和给定数据库(目标数据库) 有相同名字的给定key ,或者key 不存在于当前数据库,那么MOVE 没有任何效果。因此,也可以利用这一特性,将MOVE 当作锁(locking) 原语(primitive)。
可用版本: >= 1.0.0
时间复杂度: O(1)
返回值: 移动成功返回1 ,失败则返回0 。
- 6. PEXPIRE
 
语法 : PEXPIRE key milliseconds
作用 : 这个命令和EXPIRE 命令的作用类似,但是它以毫秒为单位设置key 的生存时间,而不像EXPIRE 命令那样,以秒为单位。
可用版本: >= 2.6.0
时间复杂度: O(1)
返回值:设置成功,返回1 key 不存在或设置失败,返回0
- 7. TTL
 
语法 : TTL key
作用 : 以秒为单位,返回给定key 的剩余生存时间(TTL, time to live)。
可用版本: >= 1.0.0
时间复杂度: O(1)
返回值:
当key 不存在时,返回-2 。
当key 存在但没有设置剩余生存时间时,返回-1 。
否则,以秒为单位,返回key 的剩余生存时间。
Note : 在Redis 2.8 以前,当key 不存在,或者key 没有设置剩余生存时间时,命令都返回-1 。
- 8. PTTL
 
语法 : PTTL key
作用 : 这个命令类似于TTL 命令,但它以毫秒为单位返回key 的剩余生存时间,而不是像TTL 命令那样,以秒为单位。
可用版本: >= 2.6.0
复杂度: O(1)
返回值: 当key 不存在时,返回-2 。当key 存在但没有设置剩余生存时间时,返回-1 。
否则,以毫秒为单位,返回key 的剩余生存时间。
注意 : 在Redis 2.8 以前,当key 不存在,或者key 没有设置剩余生存时间时,命令都返回-1 。
- 9. RANDOMKEY
 
语法 : RANDOMKEY
作用 : 从当前数据库中随机返回(不删除) 一个key 。
可用版本: >= 1.0.0
时间复杂度: O(1)
返回值:当数据库不为空时,返回一个key 。当数据库为空时,返回nil 。
- 10. RENAME
 
语法 : RENAME key newkey
作用 : 将key 改名为newkey 。当key 和newkey 相同,或者key 不存在时,返回一个错误。当newkey 已经存在时,RENAME 命令将覆盖旧值。
可用版本: >= 1.0.0
时间复杂度: O(1)
返回值: 改名成功时提示OK ,失败时候返回一个错误。
- 11. TYPE
 
语法 : TYPE key
作用 : 返回key 所储存的值的类型。
可用版本: >= 1.0.0
时间复杂度: O(1)
返回值:
none (key 不存在)
string (字符串)
list (列表)
set (集合)
zset (有序集)
hash (哈希表)
三、 Redis的String类型的操作
| 
 命令  | 
 说明  | 
 
| 
 set  | 
 设置一个key/value  | 
 
| 
 get  | 
 根据key获得对应的value  | 
 
| 
 mset  | 
 一次设置多个key value  | 
 
| 
 mget  | 
 一次获得多个key的value  | 
 
| 
 getset  | 
 获得原始key的值,同时设置新值  | 
 
| 
 strlen  | 
 获得对应key存储value的长度  | 
 
| 
 append  | 
 为对应key的value追加内容  | 
 
| 
 getrange  | 
 截取value的内容  | 
 
| 
 setex  | 
 设置一个key存活的有效期(秒)  | 
 
| 
 psetex  | 
 设置一个key存活的有效期(豪秒)  | 
 
| 
 setnx  | 
 存在不做任何操作,不存在添加  | 
 
| 
 msetnx  | 
 可以同时设置多个key,只要有一个存在都不保存  | 
 
| 
 decr (不存在则创建)  | 
 进行数值类型的-1操作  | 
 
| 
 Decrby (不存在则创建)  | 
 根据提供的数据进行减法操作  | 
 
| 
 Incr (不存在则创建)  | 
 进行数值类型的+1操作  | 
 
| 
 incrby (不存在则创建)  | 
 根据提供的数据进行加法操作  | 
 
| 
 Incrbyfloat (保留17位)  | 
 根据提供的数据加入浮点数  | 
 
四、 Redis的List类型的操作
- 1. 图示
 
- 2. 命令
 
| 
 命令  | 
 说明  | 
 
| 
 lpush  | 
 将某个值加入到一个key列表头部  | 
 
| 
 lpushx  | 
 同lpush,但是必须要保证这个key存在  | 
 
| 
 rpush  | 
 将某个值加入到一个key列表末尾  | 
 
| 
 rpushx  | 
 同rpush,但是必须要保证这个key存在  | 
 
| 
 lpop  | 
 返回和移除列表的第一个元素  | 
 
| 
 rpop  | 
 返回和移除列表的最后一个元素  | 
 
| 
 lrange  | 
 获取某一个下标区间内的元素  | 
 
| 
 llen  | 
 获取列表元素个数  | 
 
| 
 lset  | 
 设置某一个指定索引的值(索引必须存在)  | 
 
| 
 lindex  | 
 获取某一个指定索引位置的元素  | 
 
| 
 lrem  | 
 删除重复元素  | 
 
| 
 ltrim  | 
 保留列表中特定区间内的元素  | 
 
| 
 linsert  | 
 在某一个元素之前,之后插入新元素  | 
 
五、 Redis的SET类型的操作
- 1. 图示
 
- 2. 命令
 
| 
 命令  | 
 说明  | 
 
| 
 sadd  | 
 为集合添加元素  | 
 
| 
 smembers  | 
 显示集合中所有元素 无序  | 
 
| 
 scard  | 
 返回集合中元素的个数  | 
 
| 
 spop  | 
 随机删除一个元素  | 
 
| 
 smove  | 
 从一个集合中向另一个集合移动元素  | 
 
| 
 srem  | 
 从集合中删除一个元素  | 
 
| 
 sismember  | 
 判断一个集合中是否含有这个元素  | 
 
| 
 srandmember  | 
 随机返回元素  | 
 
| 
 sdiff  | 
 筛选出第一个集合中其它集合含有的相同元素,保留剩下的元素  | 
 
| 
 sinter  | 
 求交集(同时拥有的元素)  | 
 
| 
 sunion  | 
 求并集(和)  | 
 
六、 Redis的ZSET类型的操作
- 1. 图示
 
- 2. 命令
 
| 
 命令  | 
 说明  | 
 
| 
 zadd  | 
 添加一个有序集合元素  | 
 
| 
 zcard  | 
 返回集合的元素个数  | 
 
| 
 zrange  | 
 返回一个范围内的元素  | 
 
| 
 zrangebyscore  | 
 按照分数查找一个范围内的元素  | 
 
| 
 zrank  | 
 返回排名  | 
 
| 
 zrevrank  | 
 倒序排名  | 
 
| 
 zscore  | 
 显示某一个元素的分数  | 
 
| 
 zrem  | 
 移除某一个元素  | 
 
| 
 zincrby  | 
 给某个特定元素加分  | 
 
七、 Redis的HASH类型的操作
- 1. 图示
 
- 2. 命令
 
| 
 命令  | 
 说明  | 
 
| 
 hset  | 
 设置一个key/value对  | 
 
| 
 hget  | 
 获得一个key对应的value  | 
 
| 
 hgetall  | 
 获得所有的key/value对  | 
 
| 
 hdel  | 
 删除某一个key/value对  | 
 
| 
 hexists  | 
 判断一个key是否存在  | 
 
| 
 hkeys  | 
 获得所有的key  | 
 
| 
 hvals  | 
 获得所有的value  | 
 
| 
 hmset  | 
 设置多个key/value  | 
 
| 
 hmget  | 
 获得多个key的value  | 
 
| 
 hsetnx  | 
 设置一个不存在的key的值  | 
 
| 
 hincrby  | 
 为value进行加法运算  | 
 
| 
 hincrbyfloat  | 
 为value加入浮点值  |