随笔分类 - Redis开发与运维
摘要:Linux下面: 下载安装包: wget http://download.redis.io/releases/redis-4.0.10.tar.gz 解压: tar xzf redis-4.0.10.tar.gz #安装 cd redis-4.0.10 make && make install 启动
阅读全文
摘要:Redis单线程架构导致无法充分利用CPU特性,通常的做法是在一台机器上部署多个实例。 当多个实例开启AOF重写后,彼此之间会产生对CPU和IO的竞争。 对于单机部署多Redis部署,如果同一时刻运作多个子进程,对当前系统影响将非常明显,因此需要采取一种措施,把子进程工作进行隔离。 Redis在in
阅读全文
摘要:核心知识点: 1.fork操作 a.在RDB或AOF重写时,会执行fork操作创建子进程,fork操作是一个重量级操作。 b.改善fork操作耗时的手段:避免使用Xen、配置Redis实例最大使用内存、合理配置Liunx内存使用技术、降低fork操作的频率。 2.子进程开销监控与优化 1).CPU
阅读全文
摘要:核心知识点: 1.AOF:以独立日志的方式记录写命令,重启时再执行命令。与RDB不同的是解决数据持久化的实时性,可以记录所有写操作。 2.AOF工作流程:写入命令、文件同步、文件重写、文件加载。 3.命令写入 a.将命令以文本协议格式保存在缓存中。 b.为什么使用文本协议格式?兼容性、避免二次开销、
阅读全文
摘要:核心知识点: 1.RDB:将当前数据生成快照保存到硬盘 2.手动触发 save:会阻塞Redis服务器直到RDB完成。 bgsave:执行fork创建子进程,由子进程负责RDB操作,阻塞只发生在fork创建子进程期间 3.自动触发 a.设置save m n b.执行全量复制,自动执行bgsave c
阅读全文
摘要:Redis的配置文件redis.conf过滤掉空行和注释行,总共有49个可控项。 1 daemonize no 默认情况下,redis不是后台运行,如果需要后台运行,把该项的值改为yes。 2 pidfile /var/run/redis.pid 当Redis 在后台运行的时候,Redis 默认会把
阅读全文
摘要:核心知识点: 1.GEO是利用zset来存储地理位置信息,可以用来计算地理位置之间的距离,也可以做统计; 2.命令:geoadd geopos geodist geohash georadius/georadiusbymember; 3.geohash字符串越长越精准,字符串越相近距离越近。 Red
阅读全文
摘要:核心知识点: 1.Redis提供简单的发布订阅功能,缺陷在于不能回溯、不能堆积消息。 2.命令 a.publish:发布消息 b.subscribe:订阅频道 c.unsubscribe:取消订阅 d.psubscribe/punsubscribe:模式订阅或取消订阅 e.pubsub:查看活跃频道
阅读全文
摘要:核心知识点: 1.HyperLogLog并不是一种数据结构,而是一种算法,可以利用极小的内存空间完成独立总数的统计。 2.命令: a.padd:添加 b.pfcount:统计 c.pfmerge:合并 3.HyperLogLog内存占用虽然小,但是并不准确,而且只能计算独立总数。 HyperLogL
阅读全文
摘要:核心知识点: 1.Bitmaps是一种特殊的“数据结构”,实质上是一个字符串,操作单元是位。 2.命令: a.setbit:设置值,只能存储0和1,适用二元判断类型 b.getbit:获取值 c.bitcount:统计1的数量,可指定范围 d.bitop:可取交集、并集、非、异或 e.bitpos:
阅读全文
摘要:核心知识点: 1.Redis中执行Lua脚本的两种方法: a.eval b.evalsha 2.Lua中对redis的访问(redis.call()) 3.管理Lua脚本 a.script load:加载 b.script exists:判断 c.script flush:清除 d.script k
阅读全文
摘要:Lua语言是在993年由巴西一个大学研究小组发明,其设计目标是作为嵌入式程序移植到其他应用程序, 它们由C语言实现的,虽然简单小巧但是功能强大,所以许多应用都选用它做脚本语言, 尤其是在游戏领域,例如大名鼎鼎的暴雪公司将Lua语言引入到“魔兽世界”这款游戏中, Rovio公司将Lua语言作为“愤怒的
阅读全文
摘要:核心知识点: 1.事务出错的类型有两种: a.语法错误,事务不会被执行; b.运行时报错,可能有部分事务会被执行成功。 2.watch可以监测在执行事务的过程中,如果目标被改变,将会导致事务无法执行。 熟悉关系型数据库的读者应该对事务比较了解,简单的说,事务表示一组动作,要么全部执行,要么全部不执行
阅读全文
摘要:核心知识点: 1.RTT:往返时间,网络是瓶颈 2.Pipeline机制:将一组命令打包,一次发送过去,节省RTT时间 3.Pipeline和mset等的区别: a.mset命令原子性,命令不能再拆分 b.mset一个命令对应多个键值对,而Pipeline是多条命令 c.mset只需要服务支持就可以
阅读全文
摘要:Redis提供了redis-cli、redis-server、redis-benchmark等shell工具,下面会分别介绍它们的用法。 在此之前我们先来回顾一下两种连接Redis服务器的方式。 第一种是交互式方式:通过redis-cli -h (host) -p (port)的方式连接到Redis
阅读全文
摘要:核心知识点: 1.什么是慢查询? 2.客户端执行一条命令的步骤? 3.阈值和慢查询日志的设置? 4.慢查询日志的操作命令:slowlog get、slowlog len、slowlog reset。 5.注意事项: a.没有慢查询不代表客户请求不会超时,还有排队和网络传输的时间 b.当客户端请求超时
阅读全文
摘要:核心知识点: 1.键重命名:rename和renamenx,使用renamenx时newkey必须不存在,重命名后会使用del删除原来的键,如果值比较大也会会造成阻塞。 2.随机返回一个值:randomkey 3.键过期: a.除了expire、ttl之外,expireat、pexpireat、pe
阅读全文
摘要:type命令实际返回的就是当前键的数据结构类型,它们分别是:string(字符串)、hash(哈希)、 list(列表)、set(集合)、zset(有序集合),但这些只是Redis对外的数据结构。 实际上每种数据结构都有自己底层的内部编码实现,而且是多种实现,这样Redis会在合适的场景选择合适的内
阅读全文
摘要:核心知识点: 1.单线程机制:所有命令放在一个队列中 2.为什么Redis单线程这么快?内存中执行、非IO阻塞、避免线程切换和竞态产生的消耗。 3.单线程的问题?一个命令不能执行太长时间,不然会阻塞其他命令的执行。 Redis使用单线程架构和I/O多路复用模型来实现高性能的内存数据服务。 下面尝试说
阅读全文
摘要:zrank key member zrevrank key member zrange key start end [withscores] zrevrabge key start end [withscores] zrangebyscore key min max [withscores] zre
阅读全文