Redis-基础篇
文章平均质量分 75
Redis基础篇
Alan0517
...
展开
-
Redis基础篇-18-Redis的其他用法---Pipeline详解
原子操作是指你的一个业务逻辑必须是不可拆分的. 处理一件事情要么都成功,要么都失败,原子不可拆分)使用pipeline组装的命令个数不能太多,不然数据量过大,增加客户端的等待时间,还可能造成网络阻塞,可以将大量命令的拆分多个小的pipeline命令完成。小结:这是一组统计数据出来的数据,使用Pipeline执行速度比逐条执行要快,特别是客户端与服务端的网络延迟越大,性能体能越明显。大家知道redis提供了mset、mget方法,但没有提供mdel方法,如果想实现,可以借助pipeline实现。转载 2021-07-24 21:59:51 · 501 阅读 · 0 评论 -
Redis基础篇-17-Redis的其他用法---布隆过滤器
一种数据结构,是由一串很长的二进制向量组成,可以将其看成一个二进制数组。既然是二进制,那么里面存放的不是0,就是1,但是初始默认值都是0。布隆过滤器可以判断某个数据一定不存在,但是无法判断一定存在。原创 2021-04-09 06:46:14 · 244 阅读 · 0 评论 -
Redis基础篇-16-Redis的其他用法---HyperLogLog
如果统计 PV 那非常好办,给每个网页一个独立的 Redis 计数器就可以了,这个计数器的 key 后缀加上当天的日期。pfadd 用法和 set 集合的 sadd 是一样的,来一个用户 ID,就将用户 ID 塞进去就是,pfcount 和 scard 用法是一样的,直接获取计数值。但是,如果你的页面访问量非常大,比如一个爆款页面几千万的 UV,你需要一个很大的 set 集合来统计,这就非常浪费空间。是page view的缩写,即页面浏览量,通常是衡量一个网络新闻频道或网站甚至一条网络新闻的主要指标。原创 2021-04-09 06:46:00 · 160 阅读 · 0 评论 -
Redis基础篇-15-Redis的其他用法---位图bitmap
如果使用普通的 key/value,每个用户要记录 365 个,当用户上亿的时候,需要的存储空间是惊人的。为了解决这个问题,Redis 提供了位图数据结构,这样每天的签到记录只占据一个位,365 天就是 365 个位,46 个字节 (一个稍长一点的字符串) 就可以完全容纳下,这就大大节约了存储空间。setbit命令返回的值不一样,这是因为,每一次set的时候,返回的都是这个值上的之前的bit位的值。当我们要统计月活的时候,因为需要去重,需要使用 set 来记录所有活跃用户的 id,这非常浪费内存。原创 2021-04-09 06:45:39 · 222 阅读 · 0 评论 -
Redis基础篇-14-Redis的其他用法---延时队列
使用过 Rabbitmq 的同学知道它使用起来有多复杂,发消息之前要创建 Exchange,再创建 Queue,还要将 Queue 和 Exchange 通过某种规则绑定起来,发消息的时候要指定 routing-key,还要控制头部信息。Redis 的消息队列不是专业的消息队列,它没有非常多的高级特性,没有 ack 保证,如果对消息的可靠性有着极致的追求,那么它就不适合使用。可是如果队列空了,客户端就会陷入 pop 的死循环,不停地 pop,没有数据,接着再 pop,又没有数据,这就是浪费生命的。原创 2021-04-09 06:45:22 · 131 阅读 · 0 评论 -
Redis基础篇-13-Redis的复制(Master/Slave)
启动哨兵:上述目录依照各自的实际情况配置,可能目录不同正常主从演示 原的master挂了 投票新选 重新主从继续开工,info replication查查看。原创 2021-04-09 06:44:28 · 294 阅读 · 0 评论 -
Redis基础篇-12-Redis的发布订阅 pub/sub
消息发布 , PUBLISH c2 hello-redis。收到消息, PUBLISH new1 redis2015。进程间的一种消息通信模式:发送者(pub发送消息,订阅者(sub接受消息。可以一次性订阅多个, SUBSCRIBE c1 c2 c3。订阅多个,通配符*, PSUBSCRIBE new*原创 2021-04-09 06:44:00 · 150 阅读 · 0 评论 -
Redis基础篇-11-Redis的事务
官网: http://www.redis.cn/topics/transactions.html可以一次执行多个命令,本质是一组命令的集合。一个事务中的所有命令都会序列化,按顺序地串行化执行而不会被其他命令插入,不许加塞。一个队列中,一次性、顺序性、排他性地执行一系列命令1.4 分为以下五种:1.4.1 case1 正常执行:与case3区别在于 前者是编译出错,命令本身语法就存在问题,后者是运行时出错,命令本身就没问题悲观锁/乐观锁/CAS( Check And Set )悲观锁原创 2021-04-09 06:43:42 · 102 阅读 · 0 评论 -
Redis基础篇-10-Redis的持久化(RDB和AOF)
客户端-------->服务器---------->AOF文件AOF文件时一个只进行追加的日志文件Redis可以在AOF文件体积变得过大时,自动地在后台对AOF进行重写AOF文件序地保存了对数据执行的所写入操作,这些写入操作以Redis协议的格式保存,因此AOF文件的内容非常容易被人读懂,对文件进行分析也很轻松。对相同的数据集来说,AOF文件的体积通常要大于RDB文件的体积。根据所使用的fsync策略,AOF的速度可能会慢于RDB。原创 2021-04-08 21:39:46 · 140 阅读 · 0 评论 -
Redis基础篇-09-解析Redis配置文件redis.conf
所以当我们要看日志时,就需要先使用config get dir。由于我们可以自由选择文件夹启动redis服务,而日志文件默认放在服务启动的当前路径下,看下服务启动的路径,然后在该路径下找。INCLUDES包含。SECURITY安全。原创 2021-04-08 21:30:47 · 230 阅读 · 0 评论 -
Redis基础篇-08-Redis的键Key
移除给定 key 的生存时间,将这个 key 从『易失的』(带生存时间 key )转换成『持久的』(一个不带生存时间、永不过期的 key )。这个命令和 EXPIRE 命令的作用类似,但是它以毫秒为单位设置 key 的生存时间,而不像 EXPIRE 命令那样,以秒为单位。这个命令类似于 TTL 命令,但它以毫秒为单位返回 key 的剩余生存时间,而不是像 TTL 命令那样,以秒为单位。在 Redis 2.8 以前,当 key 不存在,或者 key 没有设置剩余生存时间时,命令都返回 -1。原创 2021-04-08 21:18:45 · 178 阅读 · 0 评论 -
Redis基础篇-07-Redis的数据类型---Zset(sorted set 单值多 kv键值对, k是分数 v是值)
zset(序集合)Redis zset和set一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大排序。zset的成员是唯一的,但分数(score却可以重复)。原创 2021-04-08 21:15:57 · 367 阅读 · 0 评论 -
Redis基础篇-06-Redis的数据类型---Set(单值多Vlue)
Set(集合)Redis的Set是string类型的无序集合。它是通过HashTable实现的。原创 2021-04-08 21:13:07 · 299 阅读 · 0 评论 -
Redis基础篇-05-Redis的数据类型---Hash(kv模式且v是一个kv键值对)
Hash(哈希)Redis hash是一个键值对集合。Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。原创 2021-04-08 21:09:51 · 465 阅读 · 0 评论 -
Redis基础篇-04-Redis的数据类型---List(单值多value)
Redis列表是简单的字符串列表,照插入顺序排序。可以添加一个元素到列表的头部(左边)或者尾部(右边)。它的底层是一个链表。它是一个字符链表,left,right都可以插入添加。如果键不存在,创建新的链表。如果键已经存在,新增内容。如果值全移除,对应的键也就消失了。链表的操作无论是头和尾效率都极高,但假如是对中间元素进行操作,效率就很惨淡了。原创 2021-04-08 21:06:11 · 252 阅读 · 0 评论 -
Redis基础篇-03-Redis的数据类型---String(单值单Vlue)
String是redis最基本的类型,可以理解为Memcached一样的类型,一个key对应一个value。String类型是二进制安全的,意思是redis的String可以包含任何数据。比如ipg图片或者序列化的对象。String类型是Redis最基本的数据结构,一个redis中字符串value最多可以是512M。原创 2021-04-08 21:01:04 · 342 阅读 · 0 评论 -
Redis基础篇-02-Redis入门介绍
Redis:REmote DIctionary Server(远程字典服务器)是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(key/value分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库,被称为数据结构数据库。Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。原创 2021-04-08 20:54:11 · 144 阅读 · 0 评论 -
Redis基础篇-01-NoSql的概述
单机Mysql的美好时代一个网站的访问量一般都不大,而且更多的是静态页面,动态交互类型的网站不多,用单个数据库完全可以轻松应对。上述架构下,数据存储的瓶颈是什么?数据量的总大小一个机器放不下时,数据的索引(B+Tree一个机器的内存放不下时,访问量(读写混合一个实例不能承受Memcached(缓存)+MySql+垂直拆分随着访问量的上升,几乎发部分使用MySQL架构的网站在数据库上都开始出现性能问题,web程序不再仅仅专注在功能上,同时也在追求性能。原创 2021-04-08 20:52:06 · 169 阅读 · 0 评论