杉哥的个人博客

Redis常用命令以及基础操作

redis是一个nosql的产品,支持的存储数据的类型(value)很多,常见的类型有

string 字符串、

link 链表、

hash(类似php里面关联数组)、

set一组数据的集合(无序性、唯一性、确定性)、

sorted set:对无序集合的一个升级,里面的集合元素需要按照一定的权值(按照某个规则来排序)来排序

所有redis也叫作结构化的nosql数据库。

单独注意:如何设计redis下的key?

例如在mysql里面设计一张user表:

id name password email sex
1 asion admin88 gogery@163.com m
4 ruby admin ruby@sina.com f

如果要把上面的user表转换成redis里面的key-value来保存,该如何设计key?

答:分如下几部

  1. 把mysql里面的表的名称换成redis里面key的前缀user:
  2. 把mysql里面的表的主键字段名称换成后缀后台的第二个字符 user:id:
  3. 把对应记录的主键id记录换成key的第三个部分 user:id:1:
  4. 把mysql里面其他的字段换成key的第四个部分 user:id:1:name

对应上面mysql表里面的数据,该这样保持在redis里面:

取出数据:

取id为1的用户名:

redis的数据类型:

①-string类型:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
设置指定 key 的值
SET key value
设置指定 key 的值 SET key value
设置指定 key 的值
SET key value
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
获取指定 key 的值
GET key
获取指定 key 的值 GET key
获取指定 key 的值
GET key
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
将 key 中储存的数字值增1 $i++,注意:value的值必须是整数,
如果key不存在则从0开始
INCR key
将 key 中储存的数字值增1 $i++,注意:value的值必须是整数, 如果key不存在则从0开始 INCR key
将 key 中储存的数字值增1 $i++,注意:value的值必须是整数,
如果key不存在则从0开始
INCR key

②-hash类型:

Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。

Redis 中每个 hash 可以存储 232 – 1 键值对(40多亿)。

 

redis里面value的hash类型完类似php里面的关联数组

array(‘name’=>’asion’, ‘age’=>12);

js

var json = {‘name’:’caoyang’, ‘age’:12}

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
将哈希表 key 中的字段 field 的值设为 value 。
HSET key field value
将哈希表 key 中的字段 field 的值设为 value 。 HSET key field value
将哈希表 key 中的字段 field 的值设为 value 。
HSET key field value
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
获取存储在哈希表中指定字段的值。
HGET key field
获取存储在哈希表中指定字段的值。 HGET key field
获取存储在哈希表中指定字段的值。
HGET key field
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
同时将多个 field-value (域-值)对设置到哈希表 key 中。
HMSET key field1 value1 [field2 value2 ]
同时将多个 field-value (域-值)对设置到哈希表 key 中。 HMSET key field1 value1 [field2 value2 ]
同时将多个 field-value (域-值)对设置到哈希表 key 中。
HMSET key field1 value1 [field2 value2 ]
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
获取在哈希表中指定 key 的所有字段和值
HGETALL key
获取在哈希表中指定 key 的所有字段和值 HGETALL key
获取在哈希表中指定 key 的所有字段和值
HGETALL key

③-link链表类型:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
将一个或多个值插入到列表头部
LPUSH key value1 [value2]
将一个或多个值插入到列表头部 LPUSH key value1 [value2]
将一个或多个值插入到列表头部
LPUSH key value1 [value2]
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
在列表中添加一个或多个值
RPUSH key value1 [value2]
在列表中添加一个或多个值 RPUSH key value1 [value2]
在列表中添加一个或多个值
RPUSH key value1 [value2]
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
获取列表指定范围内的元素
0代表第一个下标,-1代表最后一个下标
LRANGE key start stop
获取列表指定范围内的元素 0代表第一个下标,-1代表最后一个下标 LRANGE key start stop
获取列表指定范围内的元素
0代表第一个下标,-1代表最后一个下标
LRANGE key start stop
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
LTRIM key start stop
对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。 LTRIM key start stop
对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
LTRIM key start stop
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
移出链表里面头部的第一个元素,并返回该元素
LPOP key
移出链表里面头部的第一个元素,并返回该元素 LPOP key
移出链表里面头部的第一个元素,并返回该元素
LPOP key
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
删除链表里面尾部的最后一个元素,并返回该元素
RPOP key
删除链表里面尾部的最后一个元素,并返回该元素 RPOP key
删除链表里面尾部的最后一个元素,并返回该元素
RPOP key

④-set类型:

一般来说我们口头上说的集合基本都是指的是无序集合

集合:

无序性 元素的位置没有讲究

唯一性 里面的元素不能重复

确定性 元素的个数是确定的

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
向集合添加一个或多个成员,并查看
SADD key member1 [member2]
向集合添加一个或多个成员,并查看 SADD key member1 [member2]
向集合添加一个或多个成员,并查看
SADD key member1 [member2]
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
获取集合的成员数
SCARD key
获取集合的成员数 SCARD key
获取集合的成员数
SCARD key
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
返回给定所有集合的差集
SDIFF key1 [key2]
返回给定所有集合的差集 SDIFF key1 [key2]
返回给定所有集合的差集
SDIFF key1 [key2]
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
返回给定所有集合的交集
SINTER key1 [key2]
返回给定所有集合的交集 SINTER key1 [key2]
返回给定所有集合的交集
SINTER key1 [key2]
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
返回所有给定集合的并集
SUNION key1 [key2]
返回所有给定集合的并集 SUNION key1 [key2]
返回所有给定集合的并集
SUNION key1 [key2]

⑤-sorted set类型:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
向有序集合添加一个或多个成员,或者更新已存在成员的分数
score分数,权值
member成员元素
ZADD key score1 member1 [score2 member2]
向有序集合添加一个或多个成员,或者更新已存在成员的分数 score分数,权值 member成员元素 ZADD key score1 member1 [score2 member2]
向有序集合添加一个或多个成员,或者更新已存在成员的分数
score分数,权值
member成员元素
ZADD key score1 member1 [score2 member2]
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
通过索引区间返回有序集合成指定区间内的成员
WITHSCORES代表分数值递增(从小到大)来排序
ZRANGE key start stop [WITHSCORES]
下标参数 start 和 stop 都以 0 为底
负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。
通过索引区间返回有序集合成指定区间内的成员 WITHSCORES代表分数值递增(从小到大)来排序 ZRANGE key start stop [WITHSCORES] 下标参数 start 和 stop 都以 0 为底 负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。
通过索引区间返回有序集合成指定区间内的成员
WITHSCORES代表分数值递增(从小到大)来排序
ZRANGE key start stop [WITHSCORES]
下标参数 start 和 stop 都以 0 为底
负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
返回有序集中指定区间内的成员,通过索引,分数从高到底
成员的位置按分数值递减(从大到小)来排列,命令的其他方面和 ZRANGE 命令一样
ZREVRANGE key start stop [WITHSCORES]
返回有序集中指定区间内的成员,通过索引,分数从高到底 成员的位置按分数值递减(从大到小)来排列,命令的其他方面和 ZRANGE 命令一样 ZREVRANGE key start stop [WITHSCORES]
返回有序集中指定区间内的成员,通过索引,分数从高到底
成员的位置按分数值递减(从大到小)来排列,命令的其他方面和 ZRANGE 命令一样
ZREVRANGE key start stop [WITHSCORES]

redis的一些命令

  1. keys * 看所有的key
  2. del 删除key(成功返回1 不成功返回0)
  3. exists 检测key是否存在(存在返回1 不存在返回0)
  4. type 查看value的类型
  5. flushdb 清空当前数据库所有的key,只在测试的时候使用,线上千万不要使用。
  6. 当前数据库,注意redis默认是有16个数据库(下标从0开始),但是这个不怎么使用。使用select NUmber做切换
  7. flushall 清除所有数据库的key,千万慎用
  8. dbsize 查看当前数据库的key的个
  9. Expire 为给定 key 设置过期时间,以秒计。例:EXPIRE key 60