码迷,mamicode.com
首页 > 其他好文 > 详细

Redis 学习笔记(二) Redis 数据类型

时间:2016-07-13 09:19:18      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:

Redis 数据类型

  Redis 支持五种数据类型:string(字符串)、list(列表)、hash(哈希)、set(集合)和 zset(有序集合),接下来我们讲解分别讲解一下这五种类型的的使用。

String(字符串)

  string 类型是 redis 最基本的类型,很多人说如果去除本地持久化,只使用 string 的话,那 redis 就是一个 memcached。string 类型,一个 key 对应一个 value,一个 value 最大能存储512MB的数据。string 类型是二进制安全的,这也意味着 string 类型可以包含任何数据,常用命令如下:

序号 命令 描述
1 set key value 为指定键设置值(例:set name luofei)
2 get key 获取指定键的值(例:get name)
3 getrange key strat end 截取指定位置的键字符串(例:getrange name 0 2)
4 getset key value 给字符串重新赋值,并返回旧结果(例:getset name krockey)
5 getbit key offset 获取字符串的值的偏移(例:getbit name 4)
6 mget key1[key2..] 得到所有的字符串的值(例:mget name age)
7 setbit key offset value 设置字符串偏移(例:setbit name 0 1)
8 setrange key offset value 从指定偏移位置覆盖字符串(例:setrange name 3 aaaa)
9 mset key value[key value..] 批量设置键值(例:mset age 18 sex male)
10 msetnx key value[key value..] 批量设置多个不存在的键值(例如:msetnx country chinese address shanghai)
11 incr key 递增值,值只能为整数(例:incr count)
12 decr key 递减值,值只能为整数(例:decr count)
13 decrby key decrement 减少指定的值(例:decrby count 10)
14 append key value 在指定值后追加字符串(例:append name maska)

Hash(哈希)

  hash 是一个键值对集合,所以它特别适合存储对象,常用命令如下:

序 号 命令 描述
1 hdel key field[field2..] 删除一个或多个哈希字段(例:hdel user age)
2 hexists key field 判断一个哈希字段是否存在(例:hexists user name)
3 hget key field 获取哈希字段中的某个字段的值(例:hget user age)
4 hgetall key 获取存储在哈希中的所有字段和值(例:hgetall user)
5 hincrby key field increment 为哈希中的指定字段增加值(例:hincrby user age 10)
6 hkeys key 获取哈希中的所有字段的名称(例:hkeys user)
7 hlen key 获取哈希中字段的总数(例:hlen user)
8 hmget key field[filed2..] 批量获取哈希中指定字段的名称(例:hmget user name age)
9 hmset key field value[field2 value 2] 批量设置哈希中指定字段的值(例:hmset user name lofei age 18)
10 hset key field value 设置哈希中指定字段的值(例:hset user name lofei)
11 hsetnx key field value 设置哈希中指定字段的值,若字段存在,则不做操作(例:hsetnx user address "this is a address")
12 hvals key 获取哈希中所有的值(例:hvals user)

List(列表)

  Redis list 是一个简单的字符串列表,实际上是一个双向链表,支持反向查找和便利,更加方便,redis 内部的很多实现,如缓冲队列等用的就是这个数据结构,常用命令如下:

序号 命令 描述
1 blpop key[key2] timeout 阻塞一定秒数后获取列表中的第一个元素(例:blpop students teachers 1)
2 brpop key[key2] timeout 阻塞一定秒数后获取列表中的最后一个元素(例:brpop students teachers 1)
3 brpop push source desination timeout

阻塞一定秒数后从第一个列表中取出一个值,推到另一个列表中并返回它

(例:brpop push students teachers 0)

4 lindex key index 获取列表中指定位置的元素(例:lindex students 1)
5 linsert key before|after pivot value 在指定元素前或后插入指定的值(例:linsert students before "lucy" "lily")
6 llen key  获取列表的长度(例:llen students)
7 lpop key 获取并取出列表的第一个元素(例:lpop students)
8 lpush key value[value2..] 在列表的前面插入一个或多个值(例:lpush students tomas)
9 lpushx key value

在列表的前面插入一个或多个值,若列表不存在,则不插入任何值

(例:lpushx students )

10 lrange key start stop 获取列表中的元素区间(例:lrange students 0 5)
11 lrem key count value 从列表中删除指定值的元素(例:lrange students count tom)
12 lset key index value 设置列表中指定索引的值(例:lset students 1 david)
13 ltrim key start stop 截取列表(例:ltrim students 0 2)
14 rpop key 获取并去除列表中的最后一个元素(例:rprop students)
15 rproplpush source destination 获取第一个列表中的最后一个元素并附加到另一个列表中(例:rproplpush students teacher)
16 rpush key value[value2..] 向列表的最后添加一个或多个值(rpush students lintao lilei)
17 rpushx key value

向列表中最后插入一个值,若列表不存在,则不做插入操作

(例:rpushx students madou)

Set(集合)

  Redis 的 Set 是 string 类型的无需集合,实际上是通过 hash 表来实现的,常用命令如下:

序号 命令 描述
  sadd key mermber 向集合添加成员(例:sadd boss mayun)
  scard key 获取集合中袁术的个数(例:scard boss)
  sdiff key1 key2 获取在 key1 中不在 key2 中的元素(例:sdiff part1 part2)
  sdiffstore key key1 key2 获取在 key1 中不在 key2 中的元素并存入新的 key 中(例:sdiffstore boss boss1 boss2)
  sinter key1 key2 获取 key1 和 key2 的交集(例:sinter boss1 boss2)
  sinterstore key key1 key2 获取 key1 和 key2 的交集并存入新的 key 中(例:sinterstore boss boss1 boss2)
  sismeber key value 判断集合中是否存在指定元素(例:smembers boss mayun)
  smembers key 列出集合中的所有元素(例:smembers boss)
  smove key value 移除集合中指定的值(例:sremove boss mayun)
  spop key 移除并返回集合中的一个随机元素
  srandmember key 返回集合中的一个或多个随机数 
  srem key member1 member2... 移除集合中的一个或多个成员
  sunion key1 key2... 返回所有给定集合的并集
  sunionstore col key1 key2... 将所有给定的集合存储在col集合中
  sscan key cursor pattern count  迭代集合中的元素

Sorted Set(有序集合)

  Redis 中的 Sorted Set 和 Set 相似,但不允许成员重复,常用命令参见 Set 但有所区别,以“z”开头如:zadd、zcard、zincrby等等。

Redis 学习笔记(二) Redis 数据类型

标签:

原文地址:http://www.cnblogs.com/krockey/p/5082224.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!