杉哥的个人博客

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 [email protected] m
4 ruby admin [email protected] 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类型:

设置指定 key 的值
SET key value
获取指定 key 的值
GET 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}

将哈希表 key 中的字段 field 的值设为 value 。
HSET key field value
获取存储在哈希表中指定字段的值。
HGET key field
同时将多个 field-value (域-值)对设置到哈希表 key 中。
HMSET key field1 value1 [field2 value2 ]
获取在哈希表中指定 key 的所有字段和值
HGETALL key

③-link链表类型:

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

④-set类型:

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

集合:

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

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

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

向集合添加一个或多个成员,并查看
SADD key member1 [member2]
获取集合的成员数
SCARD key
返回给定所有集合的差集
SDIFF key1 [key2]
返回给定所有集合的交集
SINTER key1 [key2]
返回所有给定集合的并集
SUNION key1 [key2]

⑤-sorted set类型:

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