redis数据类型与基本操作
2012-08-31 15:49
721 查看
转载地址:http://xiaoruoen.blog.51cto.com/4828946/833406
Redis最为常用的数据类型有以下五种
String
Hash
List
Set
ShortedSet
下面记录一下这几种类型与Redis里对其的操作
String
最常用的一种数据类型,普通的key/value存储都可以归为此类。
set 存储一个String
get 读取一个String
decr 如果String存储的是数字的话,对其递减。如果递减的key不存在的话,将set一个key,并将其的值设为0。如果String存储的不是数字或所存的数字超出64bit,则报错
incr 与decr相同,其为递增
mget 得到所有key的值
mset key value [key1 value1...] 设置多个键值对
Hash
相当于Map,可以存储键值对
HSET/HGET 存储/查询一个Hash,单属性
HMSET/HMGET 存储/查询一个Hash,多属性
HKEYS/HVALS 列出Hash里所有的key值/valuewfh
HLEN 得到Hash的长度
HSETNX 只有当hash里没有这个key是才会生成一个key/value。如果hash里面已经存在这个key值的话,则些操作将被忽略
HDEL 删除hash里面的key/value
List
Redis list的实现为一个双向链表,即可以支持反向查找和遍历。
LPUSH/RPUSH 向List的头部或者尾部添加值。如果List不存在的话,则创建一个。
LRANGE 返回列表 key 中指定区间内的元素,区间以偏移量 start 和 stop 指定。下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
Set
Redis set对外提供的功能与list类似是一个列表的功能,特殊之处在于set是可以自动排重的,当你需要存储一个列表数据,又不希望出现重复数据时,set 是一个很好的选择,并且set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的。
SADD 将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。
SMEMBERS 返回集合 key 中的所有成员。
SortedSet
Redis sorted set的使用场景与set类似,区别是set不是自动有序的,而sorted set可以通过用户额外提供一个优先级(score)的参数来为成员排序,并且是插入有序的,即自动排序。当你需要一个有序的并且不重复的集合列表,那么 可以选择sorted set数据结构,比如twitter 的public timeline可以以发表时间作为score来存储,这样获取时就是自动按时间排好序的。
ZADD
将一个或多个 member 元素及其 score 值加入到有序集 key 当中。
如果某个 member 已经是有序集的成员,那么更新这个 member 的 score 值,并通过重新插入这个 member 元素,来保证该 member 在正确的位置上。
ZREM
移除有序集 key 中的一个或多个成员,不存在的成员将被忽略。
ZCARD
返回有序集key的个数
Redis最为常用的数据类型有以下五种
String
Hash
List
Set
ShortedSet
下面记录一下这几种类型与Redis里对其的操作
String
最常用的一种数据类型,普通的key/value存储都可以归为此类。
set 存储一个String
redis 127.0.0.1:6379> set news.blog.title "kaka is back!" OK
get 读取一个String
redis 127.0.0.1:6379> get news.blog.title "kaka is back!"
decr 如果String存储的是数字的话,对其递减。如果递减的key不存在的话,将set一个key,并将其的值设为0。如果String存储的不是数字或所存的数字超出64bit,则报错
redis 127.0.0.1:6379> set num "10" OK redis 127.0.0.1:6379> decr num (integer) 9 redis 127.0.0.1:6379> decr num1 (num1原本不存在,自动生成一个,并将其初始值设为0) (integer) -1 redis 127.0.0.1:6379> get num1 "-1" redis 127.0.0.1:6379> set num2 "a" OK redis 127.0.0.1:6379> decr num2 (error) ERR value is not an integer or out of range redis 127.0.0.1:6379> set num2 "234293482390480948029348230948" OK redis 127.0.0.1:6379> decr num2 (error) ERR value is not an integer or out of range
incr 与decr相同,其为递增
redis 127.0.0.1:6379> incr num (integer) 10 redis 127.0.0.1:6379> incr num3 (num3原本不存在,自动生成一个,并将其初始值设为0) (integer) 1
mget 得到所有key的值
redis 127.0.0.1:6379> mget num num1 num2 num3 1) "10" 2) "-1" 3) "234293482390480948029348230948" 4) "1"
mset key value [key1 value1...] 设置多个键值对
redis 127.0.0.1:6379> mset data1 "hello" data2 "thanks" data3 "haha" OK redis 127.0.0.1:6379> mget data1 data2 data3 1) "hello" 2) "thanks" 3) "haha"
Hash
相当于Map,可以存储键值对
HSET/HGET 存储/查询一个Hash,单属性
redis 127.0.0.1:6379> hset user.22213 name "xiaoruoen" (integer) 1 redis 127.0.0.1:6379> hget user.22213 name "xiaoruoen"
HMSET/HMGET 存储/查询一个Hash,多属性
redis 127.0.0.1:6379> hmset usr.135001 name "xiaoruoen" age 25 sex "male" OK redis 127.0.0.1:6379> hmget usr.135001 name age sex 1) "xiaoruoen" 2) "25" 3) "male"
HKEYS/HVALS 列出Hash里所有的key值/valuewfh
redis 127.0.0.1:6379> hkeys usr.135001 1) "name" 2) "age" 3) "sex" redis 127.0.0.1:6379> hvals usr.135001 1) "xiaoruoen" 2) "25" 3) "male"
HLEN 得到Hash的长度
redis 127.0.0.1:6379> hlen usr.135001 (integer) 3
HSETNX 只有当hash里没有这个key是才会生成一个key/value。如果hash里面已经存在这个key值的话,则些操作将被忽略
redis 127.0.0.1:6379> hsetnx usr.556633 name "kaka" (integer) 1 redis 127.0.0.1:6379> hsetnx usr.556633 name "kaxi" (integer) 0 redis 127.0.0.1:6379> hget usr.556633 name "kaka"
HDEL 删除hash里面的key/value
redis 127.0.0.1:6379> hdel usr.135001 sex (integer) 1 redis 127.0.0.1:6379> hkeys usr.135001 1) "name" 2) "age"
List
Redis list的实现为一个双向链表,即可以支持反向查找和遍历。
LPUSH/RPUSH 向List的头部或者尾部添加值。如果List不存在的话,则创建一个。
redis 127.0.0.1:6379> lpush usrlist "kaka" (integer) 1 redis 127.0.0.1:6379> lpush usrlist "xiaoruoen" (integer) 2 redis 127.0.0.1:6379> rpush usrlist "arivel" (integer) 3 redis 127.0.0.1:6379> rpush usrlist "bear"
LRANGE 返回列表 key 中指定区间内的元素,区间以偏移量 start 和 stop 指定。下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
redis 127.0.0.1:6379> lrange usrlist 0 3 列出从第一个到第4个无素,lrange只能正向排列 1) "xiaoruoen" 2) "kaka" 3) "arivel" 4) "bear"
Set
Redis set对外提供的功能与list类似是一个列表的功能,特殊之处在于set是可以自动排重的,当你需要存储一个列表数据,又不希望出现重复数据时,set 是一个很好的选择,并且set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的。
SADD 将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。
redis 127.0.0.1:6379> sadd usrtest "xiaoruoen" (integer) 1 redis 127.0.0.1:6379> sadd usrtest "xiaoruoen" (integer) 0
SMEMBERS 返回集合 key 中的所有成员。
redis 127.0.0.1:6379> smembers usrtest 1) "CR7" 2) "kaka" 3) "xiaoruoen"
SortedSet
Redis sorted set的使用场景与set类似,区别是set不是自动有序的,而sorted set可以通过用户额外提供一个优先级(score)的参数来为成员排序,并且是插入有序的,即自动排序。当你需要一个有序的并且不重复的集合列表,那么 可以选择sorted set数据结构,比如twitter 的public timeline可以以发表时间作为score来存储,这样获取时就是自动按时间排好序的。
ZADD
将一个或多个 member 元素及其 score 值加入到有序集 key 当中。
如果某个 member 已经是有序集的成员,那么更新这个 member 的 score 值,并通过重新插入这个 member 元素,来保证该 member 在正确的位置上。
redis 127.0.0.1:6379> zadd pagerank 1 "google" 7 "baidu" 3 "taobao" 4 "qq" (integer) 4 redis 127.0.0.1:6379> zrange pagerank 0 -1 1) "google" 2) "taobao" 3) "qq" 4) "baidu"
ZREM
移除有序集 key 中的一个或多个成员,不存在的成员将被忽略。
redis 127.0.0.1:6379> zrem pagerank qq (integer) 1 redis 127.0.0.1:6379> zrange pagerank 0 -1 1) "google" 2) "taobao" 3) "baidu"
ZCARD
返回有序集key的个数
redis 127.0.0.1:6379> zcard pagerank (integer) 3
相关文章推荐
- redis复习(一):基本知识点----安装、基本数据类型和相关操作
- redis中的五种数据类型和基本操作
- Redis 基础知识(5种数据类型基本操作)
- redis(一) 安装以及基本数据类型操作
- Redis 中的数据类型与基本操作
- java对redis各种数据类型的基本操作
- Redis 键值数据类型及基本操作
- Redis中基本数据类型的操作
- java 对redis几种数据类型的基本操作
- redis数据类型和基本操作
- Redis基本数据类型和相关操作
- redis基本数据类型操作之 list
- redis实战基础篇:redis的5种数据类型的基本操作
- java对redis各种数据类型的基本操作
- Redis数据类型与基本操作
- redis(一) 安装以及基本数据类型操作
- redis的基本数据类型及基本操作(一)
- redis 基本数据类型及操作学习(二)
- redis五大数据类型的基本操作
- redis基本数据类型和常用命令操作