参考Redis实战
原作者的代码这里
Redis的数据类型有五类
STRING(字符串,可以是字符串,整数或浮点数),LIST(列表),SET(集合),HASH(散列),ZSET(有序集合)
常用指令:
flushdb:清空数据库
select index:选择某个数据库(redis共有16个数据库)
python可通过redis-py对redis进行使用
java可通过jedis使用
1、STRING类型
GET 获取值
SET 设置值
DEL 删除值
incr ++
decr –
$ redis-cli # 启动redis-cli 客户端
redis 127.0.0.1:6379> set hello world # 将键 hello 的值设置为 world 。
OK # SET 命令在执行成功时返回 OK ,Python 客户端会将这个 OK 转换成 True
redis 127.0.0.1:6379> get hello # 获取储存在键 hello 中的值。
"world" # 键的值仍然是 world ,跟我们刚才设置的一样。
redis 127.0.0.1:6379> del hello # 删除这个键值对。
(integer) 1 # 在对值进行删除的时候,DEL 命令将返回被成功删除的值的数量。
redis 127.0.0.1:6379> get hello # 因为键的值已经不存在,所以尝试获取键的值将得到一个 nil ,
(nil) # Python 客户端会将这个 nil 转换成 None。
redis 127.0.0.1:6379>
2、列表
LPUSH:左端插入
RPUSH:右端插入
LPOP:左端弹出
RPOP:右端弹出
LINDEX:获取给定位置上的元素
LRANGE:获取列表在给定范围上的所有元素
redis 127.0.0.1:6379> rpush list-key item # 在向列表推入新元素之后,该命令会返回列表的当前长度。
(integer) 1 #
redis 127.0.0.1:6379> rpush list-key item2 #
(integer) 2 #
redis 127.0.0.1:6379> rpush list-key item #
(integer) 3 #
redis 127.0.0.1:6379> lrange list-key 0 -1 # 使用0为范围的起始索引,-1为范围的结束索引,
1) "item" # 可以取出列表包含的所有元素。
2) "item2" #
3) "item" #
redis 127.0.0.1:6379> lindex list-key 1 # 使用LINDEX可以从列表里面取出单个元素。
"item2" #
redis 127.0.0.1:6379> lpop list-key # 从列表里面弹出一个元素,被弹出的元素不再存在于列表。
"item" #
redis 127.0.0.1:6379> lrange list-key 0 -1 #
1) "item2" #
2) "item" #
redis 127.0.0.1:6379>
3、集合类型
采用无序方式存储元素
SADD:添加到集合
SREM:移除元素
SISMEMBER:元素是否存在于集合中
SMEMBERS:获取集合包含的所有元素
redis 127.0.0.1:6379> sadd set-key item # 在尝试将一个元素添加到集合的时候,
(integer) 1 # 命令返回1表示这个元素被成功地添加到了集合里面,
redis 127.0.0.1:6379> sadd set-key item2 # 而返回0则表示这个元素已经存在于集合中。
(integer) 1 #
redis 127.0.0.1:6379> sadd set-key item3 #
(integer) 1 #
redis 127.0.0.1:6379> sadd set-key item #
(integer) 0 #
redis 127.0.0.1:6379> smembers set-key # 获取集合包含的所有元素将得到一个由元素组成的序列,
1) "item" # Python客户端会将这个序列转换成Python集合。
2) "item2" #
3) "item3" #
redis 127.0.0.1:6379> sismember set-key item4 # 检查一个元素是否存在于集合中,
(integer) 0 # Python客户端会返回一个布尔值来表示检查结果。
redis 127.0.0.1:6379> sismember set-key item #
(integer) 1 #
redis 127.0.0.1:6379> srem set-key item2 # 在使用命令移除集合中的元素时,命令会返回被移除的元素数量。
(integer) 1 #
redis 127.0.0.1:6379> srem set-key item2 #
(integer) 0 #
redis 127.0.0.1:6379> smembers set-key
1) "item"
2) "item3"
redis 127.0.0.1:6379>
4、散列
存储多个键值对之间的映射
HSET
HGET
HGETALL
HDEL
redis 127.0.0.1:6379> hset hash-key sub-key1 value1 # 在尝试添加键值对到散列的时候,
(integer) 1 # 命令会返回一个值来表示给定的键是否已经存在于散列里面。
redis 127.0.0.1:6379> hset hash-key sub-key2 value2 #
(integer) 1 #
redis 127.0.0.1:6379> hset hash-key sub-key1 value1 #
(integer) 0 #
redis 127.0.0.1:6379> hgetall hash-key # 获取散列包含的所有键值对,
1) "sub-key1" # Python客户端会将这些键值对转换为Python字典。
2) "value1" #
3) "sub-key2" #
4) "value2" #
redis 127.0.0.1:6379> hdel hash-key sub-key2 # 在删除键值对的时候,
(integer) 1 # 命令会返回一个值来表示给定的键在移除之前是否存在于散列里面。
redis 127.0.0.1:6379> hdel hash-key sub-key2 #
(integer) 0 #
redis 127.0.0.1:6379> hget hash-key sub-key1 # 从散列里面单独取出一个域。
"value1" #
redis 127.0.0.1:6379> hgetall hash-key
1) "sub-key1"
2) "value1"
5、有序集合类型
redis 127.0.0.1:6379> zadd zset-key 728 member1 # 在尝试向有序集合添加元素的时候,
(integer) 1 # 命令会返回新添加元素的数量。
redis 127.0.0.1:6379> zadd zset-key 982 member0 #
(integer) 1 #
redis 127.0.0.1:6379> zadd zset-key 982 member0 #
(integer) 0 #
redis 127.0.0.1:6379> zrange zset-key 0 -1 withscores # 获取有序集合包含的所有元素,
1) "member1" # 这些元素会按照分值进行排序,
2) "728" # Python客户端会将这些分值转换成浮点数。
3) "member0" #
4) "982" #
redis 127.0.0.1:6379> zrangebyscore zset-key 0 800 withscores # 也可以根据分值来获取有序集合的其中一部分元素。
1) "member1" #
2) "728" #
redis 127.0.0.1:6379> zrem zset-key member1 # 在移除有序集合元素的时候,
(integer) 1 # 命令会返回被移除元素的数量。
redis 127.0.0.1:6379> zrem zset-key member1 #
(integer) 0 #
redis 127.0.0.1:6379> zrange zset-key 0 -1 withscores
1) "member0"
2) "982"
二、你好,Redis
案例:对文章进行投票管理