redis续16-发布和订阅
发布订阅(pub/sub)是一种消息通信模式,主要的目的是解耦消息发布者和消息订阅者之间的耦合,这和设计模式中的观察者模式比较相似。redis将消息类型称为通道(channel)。当发布者通过publish 命令向redisserver 发送特定类型的消息时。原理是这样的:“发布/订阅”模式中包含两种角色,分别是发布者和订阅者...
redis续15-虚拟内存的使用
redis是一种内存数据库。redis没有使用操作系统提供的虚拟内存机制而是自己在实现了自己的虚拟内存机制,主要因为操作系统的虚拟内存是以4k 页面为最小单位进行交换的,而redis 的大多数对象都小于4k,所以一个操作系统页面上可能有多个redis 对象。而且集合对象类型可能会存在多个操作系统的页面上。redis ...
redis续14-持久化
我们经常拿redis和memcached进行比较,他们主要区别之一就是持久化。redis 是一个支持持久化的内存数据库,redis会把内存中的数据同步到磁盘来保证持久化;而memcached是不支持持久化的内存数据库,如果宕机了,数据就没有了…… redis提供持久化机制:1,RDB持久化在指定的时间间隔内将内存中...
redis续13-乐观锁
先说一下什么是乐观锁。百度百科的介绍是:乐观锁( Optimistic Locking ) 相对悲观锁而言,乐观锁机制采取了更加宽松的加锁机制。悲观锁大多数情况下依靠数据库的锁机制实现,以保证操作最大程度的独占性。但随之而来的就是数据库性能的大量开销,特别是对长事务而言,这样的开销往往无法承受。而乐观锁...
redis续12-事务
Redis和众多的关系型数据库一样,也有提事务机制。在Redis中,主要有MULTI/EXEC/DISCARD/WATCH/UNWATCH这些命令来操作事务。如果有接触过关系型数据库的朋友,一样听说过事务中的一个典型的案例就是银行汇款!事务有一个重要的特性,就是要么全部执行,要么全部不执行,若中断必回滚回去!在redis的事务...
redis续11-sentinel高可用
上一篇文章,我们研究了redis的主从,即master-slave。现在更深入一下,如果master宕机,slave能不能自动切换成master呢?这个问题交给sentinel(哨兵)就可以了,当然这是在redis 3.0版本之前的解决方案。sentinel主要是为Redis master-slaves集群进行master存活检测;进行m-s服务监控;以及出现故障后,进行自动...
redis续10-主从复制
今天是2月1日,期待redis的3.0版本发布,期待集群功能效果。查看了一下官网,是redis 3.0.0 RC-3版本,截图如下:但愿稳定的版本2月中旬会发布,期待中……回到标题,开始介绍redis的主从复制,先上图:从上图我们可以看出:redis的从数据库不仅可以接收主数据库的同步数据,自己也可以同时作为...
redis续9-安全性(为redis设置密码)
Redis的默认配置会接受来自任何地址发送来的请求,所以安全性必须要考虑。在redis的配置文件中,我们可以修改bind参数和requirepass参数来增强redis的安全。1,修改bind参数,例如:只允许本机应用连接Redis,可以改成bind 127.0.0.12,通过配置文件中的requirepass参数为Redis设置一个密码例如:...
redis续7-常用的操作命令
目前的redis稳定版本是2.8版本,支持主从复制,对高可用等集群支持的不好。据说redis 3.0版本增加了cluster功能,拭目以待!刚刚看了redis官网,redis 3.0版本:“The stable release is scheduledfor the first days of February 2015. ”Redis 除了典型的5种数据类型之外,还有一些常用的命令和服务器命令,今...
redis续6-zsets类型及操作
sorted set是set的一个升级版本,它在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序。下面来介绍set类型是如何使用的:先开始redis的服务/usr/local/redis/redis-server /etc/redis.conf再进入redis的客户端...
redis续5-set数据类型及操作
在Redis中,Set类型是没有排序的字符集合,和List类型一样,我们可以在该类型的数据值上执行添加、删除或判断某一元素是否存在等操作。但是,Set集合中不允许出现重复的元素。下面来介绍set类型是如何使用的:先开始redis的服务/usr/local/redis/redis-server /etc/redis.conf再进入redis的客户端...
redis续4-Hashes类型及操作
如果说nosql仅仅是键值对(key/value)的话,那就大错特错了。对于redis来说,仅仅是string类型才符合key/value;其他的类型都不是完全符合key/value的,list是列表类型,如果有数据结构基础,对栈和队列有所理解的话,会很容易学习list类型的。 今天介绍哈希类型,也是一个频繁...
redis续3-list类型及操作
在Redis中,List类型是按照插入顺序排序的字符串链表。和数据结构中的普通链表一样,我们可以在其头部(left)和尾部(right)添加新的元素。在插入时,如果该键并不存在,Redis将为该键创建一个新的链表。与此相反,如果链表中所有的元素均被移除,那么该键也将会被从数据库中删除。 下...
redis续2-string类型及操作
redis的安装和配置前面已经简单介绍了,现在准备开始redis的使用。毕竟redis是一个nosql型的数据库,而且nosql型的数据库不必遵守SQL规范,所以具体的使用,要和关系型数据库有很大的区别,我准备要写好几个续,今天先开始string类型及操作。 string类型是Redis中最为基础的数据存储类型,一个...
redis续1-conf配置
新安装的redis,用默认的redis.conf文件,我们的启动是如下:# /usr/local/redis/redis-server /etc/redis.conf 这是因为默认的配置文件是前台启动,我们需要把aemonize参数改为yes,改为后台启动。下面我们来看一下配置文件:vi /etc/redis.conf # 默认Rdis不会作为守护进程...
redis的安装和测试
一,redis是什么Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库二,我们为什么用redisredis是一个高性能的key-value数据库,很大程序补偿了memcached这类key-value存储的不足,支持主从同步,在部分场合可以对关系数据库起到很好的补充作用。比如频繁调用的...