1.
http://www.kazaff.me/2013/02/19/phpredis%E7%9A%84%E4%BA%8B%E5%8A%A1%E6%93%8D%E4%BD%9C%E7%BB%86%E8%8A%82/
2.
放假没事学习了redis这个key-value数据库。顺便写了点学习笔记和大家分享下,希望对想了解redis的同学有所帮助。
redis对事务的支持目前还比较简单。redis只能保证一个client发起的事务中的命令可以连续的执行,而中间不会插入其他client的命令(指真正执行exec时)。
由于redis是单线程来处理所有client的请求的所以做到这点是很容易的。一般情况下redis在接受到一个client发来的命令后会立即处理并 返回处理结果,但是当一个client在一个连接中发出multi命令有,这个连接会进入一个事务上下文,该连接后续的命令并不是立即执行,而是先放到一
个队列中。当从此连接受到exec命令后,redis会顺序的执行队列中的所有命令。并将所有命令的运行结果打包到一起返回给client.然后此连接就 结束事务上下文。
http://database.51cto.com/art/201208/351762.htm
http://blog.csdn.net/liutingxu1/article/details/17137407
乐观锁:大多数是基于数据版本(version)的记录机制实现的。即为数据增加一个版本标识,在基于数据库表的版本解决方案中,一般是通过为数据表添加一个“version”字段来实现取出数据时,将此版本号一同读出,之后更新时,对此版本号+1.此时,将提交数据的版本号与数据表对应记录的当前版本号进行对比,如果提交的数据版本号大于数据库当前版本号,则予以更新,否则认为是过期数据。-------svn 的版本控制就是最好的例子
Redis的乐观锁实例:假设有一个money的key,我们开2个session来对money进行赋值操作,我们来看一下结果如何?
Session1:
127.0.0.1:6379> get money
"301"
127.0.0.1:6379> watch money
OK
127.0.0.1:6379> multi
OK
127.0.0.1:6379> incrby money 49
QUEUED
Session2:
127.0.0.1:6379> set money 400
OK
127.0.0.1:6379> get money
"400"
Session1:
127.0.0.1:6379> exec
(nil)
127.0.0.1:6379> get money
"400"
首先我们在session1中开启了对money的监控(watch key开启对key键的监控),然后开启一个事务,把命令incrby money 49放到事务队列中,等待exec执行处理。
之后我们开启session2,在session2中我们直接set money 400,这个时候我们在session2中get一下money发现已经变成400
之后我们回到session1中再用exec去执行事务队列中得incrby money 49这条命令,发现结果是nil也就是没有成功,用get命令看一下money发现是400,而不是449.
整个过程就实现了一个乐观锁。
通过pipeline方式当有大批量的操作时候。我们可以节省很多原来浪费在网络延迟的时间。需要注意到是用 pipeline方式打包命令发送,redis必须在处理完所有命令前先缓存起所有命令的处理结果。
分享到:
相关推荐
Redis3集群安装Redis3集群安装Redis3集群安装Redis3集群安装Redis3集群安装Redis3集群安装Redis3集群安装Redis3集群安装Redis3集群安装Redis3集群安装Redis3集群安装Redis3集群安装Redis3集群安装Redis3集群安装...
redis3安装包
Redis集群的安装(Redis3+CentOS)
Windows版Redis3.x、Redis4.x
redis3 安装包 CPU架构:ARM架构 操作系统:银河麒麟桌面版 验证版本 安装脚本:sudo dpkg -i *
Redis集群的安装(Redis3+CentOS)
高可用之Redis集群的安装(Redis3+CentOS)
Redis3+Tomcat7Session共享依赖相关包Redis3+Tomcat7Session共享依赖相关包Redis3+Tomcat7Session共享依赖相关包Redis3+Tomcat7Session共享依赖相关包Redis3+Tomcat7Session共享依赖相关包
用于学习redis,此版本属于Windows 64位的,自己在用,发出来给大家方便学习。
Windows直接安装版本redis-3.2 64位 下载后解压缩,直接运行安装。
本资源可结合我的文章《详解CentOS7下编译安装Redis5.x设置开机启动及修改端口(含redis需编译安装包和redis免编译安装包)》配合使用,同时也可单独去使用。包含redis3.0.7免编译版安装包,redis5.0.7离线安装包,...
Redis 3.0 集群安装配置详解 测试 Redis 3.0 集群安装配置详解
redis集群
w3school redis教程 & redis命令参考 飞龙整理 20141114
redis windows版 redis windows版
傻瓜式的redis集群创建,里面附有word安装文档,需要docker环境,已经docker-compose环境,文件直接放在服务器上,然后解压,最后修改下ip直接运行
Windows版本的Redis ,无需安装,下载既可使用。方便。
redis安装包redis
一....3、可以将redis服务安装成windows服务,在命令窗口输入:redis-server --service-install redis.windows.conf即可 4、windows下安装好redis后,启动redis服务:redis-server --service-start
REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。这是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。