
redis
文章平均质量分 78
lichunan
这个作者很懒,什么都没留下…
展开
-
利用redis + lua解决抢红包高并发的问题
抢红包的需求分析抢红包的场景有点像秒杀,但是要比秒杀简单点。因为秒杀通常要和库存相关。而抢红包则可以允许有些红包没有被抢到,因为发红包的人不会有损失,没抢完的钱再退回给发红包的人即可。另外像小米这样的抢购也要比淘宝的要简单,也是因为像小米这样是一个公司的,如果有少量没有抢到,则下次再抢,人工修复下数据是很简单的事。而像淘宝这么多商品,要是每一个都存在着修复数据的风险,那如果出故障了则很转载 2015-04-01 09:37:15 · 521 阅读 · 0 评论 -
用Redis实现分布式锁
Redis有一系列的命令,特点是以NX结尾,NX是Not eXists的缩写,如SETNX命令就应该理解为:SET if Not eXists。这系列的命令非常有用,这里讲使用SETNX来实现分布式锁。用SETNX实现分布式锁利用SETNX非常简答地实现分布式锁。例如:某客户端要获得一个名字foo的锁,客户端使用下面的命令进行获取:SETNX lock.foo 1)、如返回1,转载 2015-04-01 15:02:44 · 348 阅读 · 0 评论 -
基于Redis Lua脚本实现的分布式锁
最近项目中需要用到一个分布式的锁,考虑到基于会话节点实现的zookeeper锁性能不够,于是想使用redis来实现一个分布式的锁。简单的说,锁是一个单一的参考点,多个线程基于它来检查是否允许访问资源。例如,一个想写数据的线程,它必须先检查是否存在一个写锁。如果写锁存在,需要等待直到锁释放后它才能获取到属于它的锁并执行写操作。这样,通过锁就可以避免多个线程的同时写造成的数据冲突。现代转载 2015-04-01 16:02:19 · 1725 阅读 · 1 评论 -
用redis构建访问频率控制模块
访问频率控制模块的作用是限制客户端对服务器的访问频率,比如某个IP对某一页面在1分钟访问一个页面超过100次,那么就返回给客户端一个页面让其输入验证码等。下面是一个使用Redis构建这样一个访问控制模块的例子,其一大特点是可以通过参数对精度与性能之间进行调整。原理概述:程序会确定一个时间片,这个时间片越小,控制精度越高。一个访问控制涉及到多个时间片。程序在某个时间要求加入一次访原创 2015-04-01 19:51:56 · 478 阅读 · 0 评论 -
redis五种数据类型的使用场景
String1、string常用命令:除了get、set、incr、decr、mget等操作外,redis还提供了下面一些操作:获取字符串长度往字符串append内容设置和获取字符串的某一段内容设置和获取字符串的某一位(bit)批量设置一系列字符串的内容应用场景:String是最常用的一种数据类型,普通的key/value存储都可以归为此类,value其实不仅是转载 2015-04-20 09:39:36 · 579 阅读 · 0 评论 -
Redis监控方案
Redis介绍Redis是一种高级key-value数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。有字符串、链表、哈希、集合和有序集合5种。支持在服务器端计算集合的并、交和补集(difference)等,还支持多种排序功能。所以Redis也可以被看成是一个数据结构服务器。Redis的所有数据都保存在内存中,然后不定期的通过异步方式保存到磁盘上(称为“半持久化转载 2015-08-14 11:34:59 · 388 阅读 · 0 评论