Redis杂谈】的更多相关文章

这是2015年初应邀在南华智闻作技术交流时所作的Redis方面的一个presentation. 因为原件是Keynote格式,已经转成PDF,点击下面链接打开或者下载PDF: Redis 杂谈…
什么时候需要进行需要原子操作? 很常见的例子,就是利用Redis实现分布式锁. 实现锁需要哪些条件? 我们知道要实现锁,就需要一个改变锁状态的方法.这个方法能原子地对锁的状态进行检查并修改.如果修改成功,则意味着获得了锁.对于硬件,就是它提供的就是test-and-set,compare-and-swap等原语. Redis有没有提供类似的原语呢? 有的.Redis有提供setnx(),它会提供这样的原子操作:如果key没有值,则将值设置进去,如果已有值就不做处理,提示失败. 这样就可以基于这个…
redis配置文件redis.conf参数说明 (2013-01-09 21:20:40)转载▼ 标签: redis配置 redis.conf 配置说明 杂谈 分类: nosql # By default Redis does not run as a daemon. Use 'yes' if you need it. # Note that Redis will write a pid file in /var/run/redis.pid when daemonized. #Redis默认不是…
Java后台服务慢优化杂谈 前言 你是否遇到过这样的场景,当我们点击页面某个按钮后,页面一直loading,要等待好几分钟才出结果的画面,有时直接502或504,作为一个后台开发,看到自己开发的系统是这个样子,就问你惭愧吗.这种问题其实是性能问题,当用户量少数据少的时候,处理还是很快的,数据量一旦大起来,后台处理时间就会延长,前端大部分直接超时或无限等待直接死掉. 方案 解决数据量大的性能问题,要根据实际业务场景来针对分析.但归根结底,只有一条最终方案,即减少与数据库交互次数,尤其是在for循环…
本文为<高性能网络编程游记>的第六篇"性能追击:万字长文30+图揭秘8大主流服务器程序线程模型". 最近拍的照片比较少,不知道配什么图好,于是自己画了一个,凑合着用,让大家见笑了. 本文我们来探索一下主流的各种应用服务器的网络处理模型,看看大家都是怎么设计网络程序的.在本文中,我会从Node.js.Apache Server.Nginx.Netty.Redis.Tomcat.MySQL.Zuul等常用的服务器程序,给大家逐一分析,分析各种服务器程序的性能,心中有数,才能手中…
"为什么这个功能用不了?" 程序员:"清一下缓存" 上篇洞悉系列文章给大家详细介绍了MySQL的存储内幕:洞悉MySQL底层架构:游走在缓冲与磁盘之间.既然聊过了磁盘存储,我们今天就进一步来聊聊内存存储. 大多数并发量稍微高点的项目中都不会让请求直达MySQL这类的关系型数据库,而是中间加一道或者几道缓存,就如同操作系统中的CPU的多级缓存,以及主存那样,通过更快速的硬件去提高数据读取的效率,进而加快系统的处理速度,避免让IO成为系统的瓶颈. 而Redis作为一个成…
Django 优化杂谈 Apr 21 2017 总结下最近看过的一些文章,然后想到的一些优化点,整理一下. 数据库连接池 http://mt.dbanotes.net/arch/instagram.html Django 默认DB配置提供了选项CONN_MAX_AGE用于配置在同一个thread/greenlet里面DB connection的最大存活时间,便于连接的复用,在实践中发现如果使用gunicorn+gevent的方式来启动WSGI服务,由于gunicorn会创建一个很大的gevent…
所谓的延时任务给大家举个例子:你买了一张火车票,必须在30分钟之内付款,否则该订单被自动取消.订单30分钟不付款自动取消,这个任务就是一个延时任务. 我之前已经写过2篇关于延时任务的文章: <完整实现-通过DelayQueue实现延时任务> <延时任务(二)-基于netty时间轮算法实战> 这两种方法都有一个缺点:都是基于单体应用的内存的方式运行延时任务的,一旦出现单点故障,可能出现延时任务数据的丢失.所以此篇文章给大家介绍实现延时任务的第三种方式,结合redis zset实现延时…
关于分布式锁的概念,具体实现方式,直接参阅下面两个帖子,这里就不多介绍了. 分布式锁的多种实现方式 分布式锁总结 对于分布式锁的几种实现方式的优劣,这里再列举下 1. 数据库实现方式 优点:易理解 缺点:操作数据库消耗较大,性能较低.为了处理一些异常,会使得整个方案越来越复杂 2. 缓存实现方式 优点:性能好,实现起来较为方便. 缺点:通过超时时间来控制锁的失效时间并不是十分的靠谱. 3 zookeeper实现 优点:有效的解决单点问题,不可重入问题,非阻塞问题以及锁无法释放的问题. 缺点:性能…
测试方法 为了对Ignite做一个基本了解,做了一个性能测试,测试方法也比较简单主要是针对client模式,因为这种方法和使用redis的方式特别像.测试方法很简单主要是下面几点: 不作参数优化,默认配置进行测试 在一台linux服务器上部署Ignite服务端,然后自己的笔记本作客户端 按1,10,20,50,100,200线程进行测试 测试环境说明 服务器: [09:36:56] ver. 1.7.0#20160801-sha1:383273e3 [09:36:56] OS: Linux 2.…
1 php -v查看php版本 2 brew search php|grep redis 搜索对应的redis   ps:如果没有brew 就根据http://brew.sh安装 3 brew install 安装对应的redis 4 找到php.ini添加extension_dir=路径(redis.so所在的路径) 5 如果没有extension=redis.so就添加 6 重启apache或者ngnix…
KV系统对比表 对比维度 Redis Redis Cluster Medis Hbase Tair 访问模式    支持Value大小 理论上不超过1GB(建议不超过1MB) 理论上可配置(默认配置10M,这个可以调大) 256M(更大value还需要测试) 支持Value结构 byte[]/list/map/set 支持分列族存储,在列族(column Family)下支持多quantifier(quantifier支持实时增删,不需要在schema中预定义) (1)kv/map/list (…
Redis是k-v型数据库的典范,设计思想及数据结构实现都值得学习. 1.数据类型 value支持五种数据类型:1.字符串(strings)2.字符串列表(lists)3.字符串集合(sets)4.有序字符串集合(sorted sets)5.哈希(hashes)而关于key,有几个点要提醒大家:1.key不要太长,尽量不要超过1024字节,这不仅消耗内存,而且会降低查找的效率:2.key也不要太短,太短的话,key的可读性会降低:3.在一个项目中,key最好使用统一的命名模式,例如user:10…
redis-cluster 简介 redis-cluster是一个分布式.容错的redis实现,redis-cluster通过将各个单独的redis实例通过特定的协议连接到一起实现了分布式.集群化的目标. redis-cluster中不存在中心节点或者代理节点,这样的设计目标是为了实现线性化扩展,也解决了单一中心(或代理)节点带来的性能瓶颈,但是随着集群规模的增大,节点之间通信的开销也会成指数级的增长,这样的机制也反过来限制了redis-cluster的规模无限扩充的可能. redis-clus…
redis持久化 snapshot数据快照(rdb) 这是一种定时将redis内存中的数据写入磁盘文件的一种方案,这样保留这一时刻redis中的数据镜像,用于意外回滚.redis的snapshot的格式是自定义的rdb格式,名称为XXX.rdb,这是一种被压缩的二进制格式. redis中的数据快照并非仅仅通过crontab这种形式定期执行任务的,可以设置一定时间内数据被写入/更改的次数来触发snapshot操作.配置 save 60 1000, save 1800 1,表示过去的一分钟内执行10…
今天在部署python代码到预生产环境时,web站老是出现redis链接未初始化,无法连接到服务的提示,比对了一下开发环境与测试环境代码,完全一致,然后就是查看各种日志,排查了半天也没有查明是什么原因引起的. 没有办法的情况下,直接登录服务器,从uwsgi与nginx中卸载掉这个web服务,然后暴力的在命令操作符下输入python main.py,执行访问发现又正常了......狂吐血400CC...然后是各种怀疑uwsgi和nginx,查看配置与其他服务正常,排除完后只能回归到检查代码. 静下…
本次要分享的是利用windows+nginx+iis+redis+Task.MainForm组建分布式架构,上一篇分享文章制作是在windows上使用的nginx,一般正式发布的时候是在linux来配置nginx,我这里测试分享内容只是起引导作用:下面将先给出整个架构的核心节点简介,希望各位多多点赞: . 架构设计图展示 . nginx+iis构建服务集群 . redis存储分布式共享的session及共享session运作流程 . redis主从配置及Sentinel管理多个Redis集群 .…
本次要分享的是利用windows+nginx+iis+redis+Task.MainForm组建分布式架构,由标题就能看出此内容不是一篇分享文章能说完的,所以我打算分几篇分享文章来讲解,一步一步实现分布式架构:下面将先给出整个架构的核心节点简介,希望各位多多点赞: . 架构设计图展示 . nginx+iis构建服务集群 . redis存储分布式共享的session及共享session运作流程 . redis主从配置及Sentinel管理多个Redis集群 . 定时框架Task.MainForm提…
这几天没有按照计划分享技术博文,主要是去医院了,这里一想到在医院经历的种种,我真的有话要说:医院里的医务人员曾经被吹捧为美丽+和蔼+可亲的天使,在经受5天左右相互接触后不得不让感慨:遇见的有些人员在挂号队伍犹如长龙的时候坐在收费窗口玩手机,理由是自己是换班的差几分钟才上班呢:遇见态度极其恶劣的主任医师,做咨询几个问题声音马上提高并言语中携带讽刺话语:还有其他几个遇见哈哈这里就不多说了,可能是某些医务人员觉得多您个不少,我有的是客源,所以个别是这种态度吧,还是市医院真不知道怎么混进去的. 以上是个…
redis是现在主流的缓存工具了,因为使用简单.高效且对服务器要求较小,用于大数据量下的缓存 spring也提供了对redis的支持: org.springframework.data.redis.core.RedisTemplate 为了在springmvc环境中使用redis,官方推荐是和jedis结合使用,由jedis来管理连接这些 首先进行整合配置 1.properties文件 #############Common Redis configuration cache.redis.max…
链表在 Redis 中的应用非常广泛, 比如列表键的底层实现之一就是链表: 当一个列表键包含了数量比较多的元素, 又或者列表中包含的元素都是比较长的字符串时, Redis 就会使用链表作为列表键的底层实现.除了链表键之外, 发布与订阅.慢查询.监视器等功能也用到了链表, Redis 服务器本身还使用链表来保存多个客户端的状态信息, 以及使用链表来构建客户端输出缓冲区(output buffer). redis实现链表的数据结构: //链表节点数据结构 typedef struct listNod…
Redis 没有直接使用 C 语言传统的字符串表示(以空字符结尾的字符数组,以下简称 C 字符串), 而是自己构建了一种名为简单动态字符串(simple dynamic string,sds)的抽象类型, 并将sds用作 Redis 的默认字符串表示. sds简单动态字符串数据结构如下: typedef char *sds; struct sdshdr { int len; int free; char buf[]; }; len记录字符串的长度,free记录sds还剩余的空间,buf指向存储字…
Redis 安装 & 配置 本测试环境将在 CentOS 7 x64 上安装最新版本的 Redis. 1. 运行以下命令安装 Redis $ wget http://download.redis.io/releases/redis-3.2.6.tar.gz $ tar xzf redis-3.2.6.tar.gz $ cd redis-3.2.6 $ make install 如果 CentOS 上提示 wget 命令未找到,则先安装 net-tools. yum install net-too…
(原创出处为本博客,http://www.cnblogs.com/linguanh/) 目录: 一,下载 二,解压 三,配置与启动 四,测试 Redis 五,配置 phpRedis 扩展 六,综合测试 前序  Redis是一个开源,先进的key-value存储,并用于构建高性能,可扩展的Web应用程序的完美解决方案.  Redis特点:   1,Redis数据库完全在内存中,使用磁盘仅用于持久性. 2,相比很多键值数据存储,Redis拥有一套较为丰富的数据类型 3,Redis可以将数据复制到任意…
1 需求背景 该应用场景为DMP缓存存储需求,DMP需要管理非常多的第三方id数据,其中包括各媒体cookie与自身cookie(以下统称supperid)的mapping关系,还包括了supperid的人口标签.移动端id(主要是idfa和imei)的人口标签,以及一些黑名单id.ip等数据. 在hdfs的帮助下离线存储千亿记录并不困难,然而DMP还需要提供毫秒级的实时查询.由于cookie这种id本身具有不稳定性,所以很多的真实用户的 浏览行为会导致大量的新cookie生成,只有及时同步ma…
1.心路历程 上年11月份来公司了,和另外一个同事一起,做了公司一个移动项目的微信公众号,然后为了推广微信公众号,策划那边需要我们做一些活动,包括抽奖,投票.最开始是没有用过redis的,公司因为考虑到参与人数的问题,给我们配了两台redis服务器,一台windows的(负责本地测试),一台linux的(负责线上版本),接下来说说途中遇到的坑,和最后的解决方法 2.坑之一,存List的瓶颈问题 linux版本redis服务器是16G的内存,因为第一次使用redis,并不知道去做压力测试,不知道瓶…
一.准备工作 下载redis的windows版zip包:https://github.com/MSOpenTech/redis/releases 运行redis-server.exe程序 出现黑色窗口表示redis服务已启动. 二.与spring boot结合 参考官方例子:http://spring.io/guides/gs/messaging-redis/ 修改pom.xml: <project xmlns="http://maven.apache.org/POM/4.0.0"…
准备工作 下载windows环境redis,我下载的是2.4.5,解压,拷贝一主(master)两从(slaveof).主机端口使用6379,两从的端口分别为6380和6381, 我本地索性用6379.6380.6381创建三个文件夹用来区分. 修改slaveof 配置文件 依次修改6380.6381和redis.conf. 主要修改的就是ip地址.端口.主机地址.我在本地做测试所以ip地址都用的是127.0.0.1 port slaveof 启动主从redis cmd切换到你主从目录内分别启动…
本章内容: Memcached 简介.安装.使用 Python 操作 Memcached 天生支持集群 redis 简介.安装.使用.实例 Python 操作 Redis String.Hash.List.Set.Sort Set 操作 管道 发布订阅 RabbitMQ 简介.安装.使用 使用 API 操作 RabbitMQ 消息不丢失 发布订阅 关键字发送 模糊匹配 一.Memcached 1.简介.安装.使用 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态 Web 应用以…
Redis 主从复制各种环境下测试 测试环境: Linux ubuntu 3.11.0-12-generic 2GB Mem 1 core of Intel(R) Core(TM) i5-3470 CPU @ 3.20GHz Redis 2.6.13 以下 R1 表示master, R2表示slave 配置采用运维组标准配置,默认主从配置一样,在从节点启动后设置为slave R1: 127.0.0.1 6378 R2: 127.0.0.1 6379 0. 初始情况下各节点info情况(部分有用信…