redis
横云断岭
在国内大型互联网公司负责6K+应用,80K+机器的Spring Boot微服务技术落地,关注开发体验,微服务,APM,应用诊断,dubbo开源。
Github: https://github.com/hengyunabc
展开
-
Redis中的双向链表的实现
不得不说,数据结构书上的代码都是不实际的。C语言的代码写得比较少,因此多记录下有用的代码。adlist.h:/* adlist.h - A generic doubly linked list implementation * * Copyright (c) 2006-2010, Salvatore Sanfilippo * All rights reserved. *原创 2012-07-15 23:45:34 · 1800 阅读 · 0 评论 -
利用redis + lua解决抢红包高并发的问题
抢红包的需求分析抢红包的场景有点像秒杀,但是要比秒杀简单点。因为秒杀通常要和库存相关。而抢红包则可以允许有些红包没有被抢到,因为发红包的人不会有损失,没抢完的钱再退回给发红包的人即可。另外像小米这样的抢购也要比淘宝的要简单,也是因为像小米这样是一个公司的,如果有少量没有抢到,则下次再抢,人工修复下数据是很简单的事。而像淘宝这么多商品,要是每一个都存在着修复数据的风险,那如果出故障了则很麻烦...原创 2014-02-20 20:08:26 · 134780 阅读 · 30 评论 -
利用redis缓存热门数据,分页的一种思路
普通分页一般分页做缓存都是直接查找出来,按页放到缓存里,但是这种缓存方式有很多缺点。如缓存不能及时更新,一旦数据有变化,所有的之前的分页缓存都失效了。比如像微博这样的场景,微博下面现在有一个顶次数的排序。这个用传统的分页方式很难应对。一种思路最近想到了另一种思路。数据以ID为key缓存到Redis里;把数据ID和排序打分存到Redis的skip list,即zset里;原创 2014-04-21 19:26:52 · 30593 阅读 · 3 评论 -
分片(Sharding)的全局ID生成
数据在分片时,典型的是分库分表,就有一个全局ID生成的问题。单纯的生成全局ID并不是什么难题,但是生成的ID通常要满足分片的一些要求:不能有单点故障。以时间为序,或者ID里包含时间。这样一是可以少一个索引,二是冷热数据容易分离。可以控制ShardingId。比如某一个用户的文章要放在同一个分片内,这样查询效率高,修改也容易。不要太长,最好64bit。使用long比较好操作,如果是96bit,那就要各种移位相当的不方便,还有可能有些组件不能支持这么大的ID。原创 2014-02-16 18:37:48 · 22231 阅读 · 3 评论 -
基于redis的分布式ID生成器
项目地址https://github.com/hengyunabc/redis-id-generator基于redis的分布式ID生成器。准备首先,要知道redis的EVAL,EVALSHA命令:http://redis.readthedocs.org/en/latest/script/eval.htmlhttp://redis.readthedocs.org/en/latest/script/ev原创 2015-03-13 19:22:59 · 42295 阅读 · 23 评论