https://github.com/josiahcarlson/redis-in-action 对应java等语言的代码
http://redis.io/commands //查询Redis命令的官网
1.2 redis数据结构简介
1.2.1 Redis中的字符串
1)SET -设置键值对
官网说明:
SET key value[expiration EX seconds|PX milliseconds] [NX|XX]
Set key to hold the string value. If key already holds a value, it is overwritten, regardless of its type. Any previous time to live associated with the key is discarded on successful SET operation.
Options Starting with Redis 2.6.12 SET supports a set of options that modify its behavior:EX seconds -- Set the specified expire time, in seconds.PX milliseconds -- Set the specified expire time, in milliseconds.NX -- Only set the key if it does not already exist.XX -- Only set the key if it already exist.Note: Since the SET command options can replace SETNX, SETEX, PSETEX, it is possible that in future versions of Redis these three commands will be deprecated and finally removed.
Return Value:
Simple string reply: OK if SET was executed correctly. Null reply: a Null Bulk Reply is returned if the SET operation was not performed because the user specified the NX or XX option but the condition was not met.
命令格式:
SET key value [expiration EX seconds|PX milliseconds] [NX|XX]
e.g 1
SET hello world
e.g 2 在存储键值对时指定过期时间和策略:
set mykey Hello EX 150 NX
2)GET - 获取指定键对应得值
官网说明:
GET key
Get the value of key. If the key does not exist the special value nil is returned. An error is returned if the value stored at key is not a string, because GET only handles string values.
Return value:
Bulk string reply: the value of key, or nil when key does not exist.
命令格式:
GET key
e.g 1
get hello
1.2.2 使用Redis存储链表
链表操作的命令:
LPUSH //将元素推入链表的左端
RPUSH // 将元素推入链表的右端
LPOP //从链表的左端弹出元素
RPOP //从链表的右端弹出元素
LINDEX //从链表的指定位置上获取一个元素
LRANGE //获取链表指定范围上的所有元素
例子:
向名为list-key的链表中插入3个元素:
rpush list-key item1
rpush list-key item2
rpush list-key item3
取出链表中的所有元素:
命令:
lrange list-key 0 -1
aliyun_mine:0>lrange list-key 0 -1
1) "item1"
2) "item2"
3) "item3"
aliyun_mine:0>
取出链表中角标为1的元素:
命令:
lindex list-key 1
1.2.3 Redis的set集合
Redis的set集合和链表都可以用于存储多个字符串, 它们之间的不同在于,列表可以存储多个相同的字符串,而SET集合则可以通过散列值来保证自己存储的每个字符串都是各不相同的。 (这些散列值只有键,但没有与键相关联的值)。
Redis的set集合使用无序方式存储元素。
命令:
sadd //使用sadd命令将元素添加到set集合中
srem //使用srem命令将元素从set集合中移除。
sismember //使用sismember 命令可以快速地检查一个元素是否存在于set集合中
smembers //使用smembers命令可以获取set集合中的所有元素
例子:
创建一个set集合,并向其中添加三个元素se1、 se2、 se3。
#获取set集合中的所有元素:
命令:
SMEMBERS key
例子:
smembers set-key
#判断se4是否存在于set-key集合中
命令:
SISMEMBER key element
例子:
#把se3从set集合中移除
srem set-key se3
1.2.4 Redis的散列hash
Redis的散列(hash)可以存储多个键值对之间的映射。和字符串一样,散列存储的值既可以是字符串。又可以是数字值,并且用户同样可以对散列存储的数字值执行自增操作或自减操作。
向散列中插入元素
从散列中获取元素
从散列中移除元素
#创建一个名为hash-key的散列,并向其中添加一个sub-key1 value1的键值对:
hset hash-key sub-key1 value1 #hset命令会返回一个值来表示给定的键是否已经存在于散列里面
#获取散列中的所有值:
命令:
hgetall hash-key
#从散列里面获取某个键的值:
命令:
hget hash-key sub-key1
#从散列里面删除键值对
命令:
hdel hash-key sub-key1
1.2.5 Redis的有序集合zset
有序集合zset的元素由俩部分构成:
(1) 键member
(2) 分值score
操作zset的命令:
ZADD #将一个带有给定分值的成员添加到有序集合里面
ZRANGE #根据元素在有序集合中的位置,从有序集合中获取多个元素
ZRANGEBYSCORE #获取有序集合在给定分值范围内的所有元素
ZREM #移除
#创建一个zset-key有序集合,并向其中添加3个元素
zadd zset-key 728 member1
zadd zset-key 982 member0
zadd zset-key 982 member0
取出有序集合中的所有元素:
ZRANGE zset-key 0 -1 withscores
#移除键为 member1的元素:
zrem zset-key member1