Redis实战笔记(1)

使用Radis的理由

  1. 可以让代码变的更简短、更易懂、更易维护,而且还可以使得代码的运行速度更快。在一般的情况下,Redis的效率和易用性比关系数据库更加出色。
  2. 对Redis存储的数据执行随机读写的速度总是非常迅速的。
  3. 可以避免写入不必要的临时数据,也免去了对临时数据进行扫描或者删除的麻烦,可以改善程序的性能。

 

Redis数据结构详解

Redis可以存储键和5种不同数据结构关系之间的映射,它们之间的关系如下表所示:

结构类型

STRING

LIST

SET

HASH

ZSET

结构存储的值

字符串、整数和浮点数

链表结构,每个节点都包含一个字符串

无序收集器,被包含的字符串都是独一无二、各不相同的

键值对的无序散列表

字符串成员(member)和浮点数分值之间的有序映射,元素的排列顺序由分值的大小决定

结构的读写能力

操作字符串或者字符串的一部分;对象整数和浮点数执行自增或自减操作

从链表的两端推入或者弹出元素;根据偏移量对链表进行修剪(trim);读取单个或者多个元素;根据值查找或者获取元素

添加、获取、移除单个元素;检查一个元素是否存在于集合中;计算交集、并集、差集;从集合里面随机获取元素

添加、获取、移除单个键值对;获取所有的键值对

添加、获取、删除单个元素;根据分值范围或者成员来获取元素

 

Redis中的字符串

 

命令

行为

GET

获取存储在给定键中的值

SET

设置存储在给定键中的值

DEL

删除存储在给定键中的值

使用示例:

127.0.0.1:6379> set hello world # 设置键hello的为值world

OK

127.0.0.1:6379> get hello # 获取hello的值

"world"

127.0.0.1:6379> del hello # 删除这个键值对

(integer) 1

127.0.0.1:6379> get hello # 键已经被删除了,值变为null

(nil)

127.0.0.1:6379>

 

Redis中的列表

redis中对链表(linked-list)结构的支持使得它在键值对存储世界中独树一帜。一个列表结构可以有序的存储多个字符串。

命令

RPUSH

LRANGE

LINDEX

LPOP

行为

将给定值推入列表的右端

获取列表在给定范围上的所有值

获取列表在给定位置上的单个元素

从列表的左端弹出一个值,并返回该值

 

使用范例:

127.0.0.1:6379> rpush list-key item #向列表推入新元素

(integer) 1 #返回列表的当前的长度

127.0.0.1:6379> rpush list-key item2

(integer) 2

127.0.0.1:6379> rpush list-key item #列表中的元素允许重复存储

(integer) 3

127.0.0.1:6379> lrange list-key 0 -1 #0为起始索引,-1表示结束索引,取出列表中的所有元素

1) "item"

2) "item2"

3) "item"

127.0.0.1:6379> lindex list-key 1 #查询列表中单个元素

"item"

127.0.0.1:6379> lpop list-key #从列表中弹出一个元素,该元素不再存在该列表中

"item"

127.0.0.1:6379> lrange list-key 0 -1

1) "item2"

2) "item"

127.0.0.1:6379>

 

Redis的集合

集合通过使用散列表来保证自己存储的每个字符串都是各不相同的,而且Redis的集合采用的是无序的方式去存储

 

命令

SADD

SMEMBERS

SISMEMER

SREM

行为

将给定元素添加到集合

返回集合包含的所有元素

检查给定元素是否存在于集合中

如果给定的元素存在于集合中,那么将移除该元素

使用范例:

127.0.0.1:6379> sadd set-key item # 命令返回1表示这个元素成功的被添加到集合中

(integer) 1

127.0.0.1:6379> sadd set-key item2

(integer) 1

127.0.0.1:6379> sadd set-key item3

(integer) 1

127.0.0.1:6379> sadd set-key item #集合中不能存储重复的元素

(integer) 0

127.0.0.1:6379> smembers set-key #获取集合的所有元素

1) "item2"

2) "item3"

3) "item"

127.0.0.1:6379> sismember set-key itme4 #检查一个元素是否存在于集合中

(integer) 0 #0表示不在集合中,1表示存在于集合中

127.0.0.1:6379> sismember set-key item

(integer) 1

127.0.0.1:6379> srem set-key item2 #移除集合中的元素

(integer) 1 #1表示移除的数量为1

127.0.0.1:6379> srem set-key item2

(integer) 0 #0表示不存在需要移除的元素

127.0.0.1:6379> smembers set-key

1) "item3"

2) "item"

127.0.0.1:6379>

 

Redis的散列

Redis的散列可以存储多个键值对之间的映射。和字符串一样,散列存储的值既可以是字符类型还可以是数字类型。其中,散列中的键是不重复的无序排序方式。

命令

HSET

HGET

HGETALL

HDEL

行为

在散列里面关联起来给定的键值对

获取指定散列键的值

获取散列中的所有键值对

如果给定的键存在于该散列,则移除这个键

使用范例:

127.0.0.1:6379> hset hash-key sub-key1 value1

(integer) 1 #1表示给定的键不存在于该散列中

127.0.0.1:6379> hset hash-key sub-key2 value2

(integer) 1

127.0.0.1:6379> hset hash-key sub-key1 value1

(integer) 0 #表示给定的键已经存在于散列中

127.0.0.1:6379> hgetall hash-key #获取所有的键值对

1) "sub-key1"

2) "value1"

3) "sub-key2"

4) "value2"

127.0.0.1:6379> hdel hash-key sub-key2 #删除键值对

(integer) 1 #1表示给定键存在于散列中

127.0.0.1:6379> hdel hash-key sub-key2

(integer) 0 #0表示需要删除的键不存在

127.0.0.1:6379> hget hash-key sub-key1 #获取某一个键的值

"value1"

127.0.0.1:6379> hgetall hash-key

1) "sub-key1"

2) "value1"

127.0.0.1:6379>

 

Redis的有序集合

有序集合和散列一样,都用于存储键值对。其中,有序集合的键又称为成员,每个成员都是各部相同的,而有序集合的值则被称为分值,分值必须为浮点数.

 

命令

ZADD

ZRANGE

ZRANGEBYSCORE

ZREM

行为

将一个带有给定分值的成员添加到有序集合里面去

根据元素在有序排列中所处的位置,从有序集合里面获取多个元素

获取有序集合在给定分值范围内的所有元素

如果给定成员存在于有序集合,那么一次该成员

 

使用范例:

127.0.0.1:6379> zadd zset-key 728 member1 #添加元素

(integer) 1 #1表示新添加元素的数量

127.0.0.1:6379> zadd zset-key 982 member0

(integer) 1

127.0.0.1:6379> zadd zset-key 982 member0 #键不能重复

(integer) 0

127.0.0.1:6379> zrange zset-key 0 -1 withscores #获取有序集合中的所有元素

1) "member1" #按照分值大小进行排序

2) "728"

3) "member0"

4) "982"

127.0.0.1:6379> zrangebyscore zset-key 0 800 withscores #获取某范围内分值对应的元素

1) "member1"

2) "728"

127.0.0.1:6379> zrem zset-key member1 #移除有序集合元素

(integer) 1 #1表示被移除元素的数量

127.0.0.1:6379> zrem zset-key member1

(integer) 0

127.0.0.1:6379> zrange zset-key 0 -1 withscores

1) "member0"

2) "982"

127.0.0.1:6379>

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值