redis特性简介

更多博客请访问本人博客

1、redis基础数据结构

redis的所有数据结构都是由key-value构成的,key为关键字名称,value可以是字符串、哈希表、集合等

常用的key-value操作包括set、get、del、expire等操作。其中set使用比较常见,其用法如下:

set key value [ex seconds] [px milliseconds] [nx|xx]

ex表示过期时间,px表示时间单位(默认为秒),nx表示仅在key不存在时操作,xx表示在key存在时操作。实例set mykey "hello" ex 60表示设置一个(mykey,"hello")且过期时间为60秒的键值对。

1.1 字符串

字符串数据比较简单,上面的例子已经简单演示了。

1.2 Hash

Hash结构非常好用,通常的数据都是具有关联的,这也就是关系型数据库依然广泛使用的原因。那么要在redis中存储关系型数据就需要用到hash结构,例如现在要使用redis存储一个学校学生的信息,学生包括学号、姓名、性别。当然使用字符串也是可以解决的,我们可以构造一个如下所示的json字符串存储在redis中,key为学生学号:

{
  num:111
  name:zhang3
  sex:male
}

但是这样做的缺点是当我们要对数据进行更改的时候就不方便了,需要把所有学生的数据获取之后解析json数据并进行更改,这样做很麻烦。我们使用redis能够很好地解决这个问题,上述的结构可以使用如下命令进行存储:

hmset 111 num 111 name zhang3 sex male

hmset可以同时为某个hash设置多个field-value对,更改也很方便,只要使用hset 111 name zhangsan

1.3 list

列表只是字符串列表,可以在列表的头部和尾部添加元素。由于redis的单个操作是原子性的,因此多个线程同时对redis进行读取并不会造成线程安全问题,由于redis的这个特征,它适合当做消息队列来使用。

1.4 set

redis的集合是唯一字符串的无序集合,通过使用sadd myset "value"进行插入操作,使用spop myset "value"进行弹出操作。

2、redis发布订阅

发布订阅模式是进程间通信的一种常用设计模式。redis的发布订阅模式具有如下几个特征:

  • 由发布者、订阅者、信道组成
  • 发送者在接受者接受消息的时候发送消息,过时的消息不会存储,后来的接受者不会接收到之前的消息。
  • 接受者可以订阅多个信道

发布者通过使用publish channelName "message"来发送信息,订阅者通过subscribe channelName1 channelName2...来接收多个信道的消息。

3、redis原子性

所谓的原子性也可以称为不可分割性,或称“all or none”,redis的原子性包括两个方面:

  • 单个操作是原子的
  • 支持事务,multi命令与exec结合来实现多条命令的原子性。

4、拓展

redis是内存数据库,然而机器的内存是有限的,对于目前动辄上G上T的数据量,单个服务器的内存是不够用的,因此拓展的需求也是比较迫切的。对于redis,拓展性可以有两种方案来实现:

4.1 Twemproxy代理

集群要解决的一个重要问题是分区partition,多台服务器共同承载数据,那么就需要一个代理节点来进行全局的数据路由。Twemproxy是一个很好的选择,它使用了一致性hash算法将数据均分到多台redis上,而且一致性hash算法还能够保障集群拓展。

4.2 redis集群

从redis3.0开始,redis具有了自己的集群,使用hash槽算法来均分数据,redis集群的每个redis节点都可作为代理节点进行数据路由。

5、可靠性

redis的cluster-slave模式可以保障数据的可靠性,每一个hash槽都可以有1-N个备份节点,当主节点失效之后还能进行投票选出新的节点。cluster-slave模式的另外一个优点是,redis可以实现读写分离,主节点写入数据,slave节点用于数据读取。

6、持久化

redis用作数据储存还有一个优势是持久化,其他缓存例如memcached在端点之后就会丢失数据,而redis可以弥补这一不足。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值