redis
文章平均质量分 62
我就是我,不一样的烟火
这个作者很懒,什么都没留下…
展开
-
地理空间(geospatial)
将指定的地理空间位置(纬度、经度、名称)添加到指定的key中。这些数据将会存储到sorted set这样的目的是为了方便使用GEORADIUS或者GEORADIUSBYMEMBER命令对数据进行半径查询等操作。 使用什么样的地球模型(Earth model)? 这只是假设地球是一个球体,因为使用的距离公式是Haversine公式。这个公式仅适用于地球,而不是一个完美的球体。当在...原创 2021-12-15 22:42:44 · 566 阅读 · 0 评论 -
hyperloglogs基数统计
不重复的元素个数,可以接受误差 redis 2.8.9 版本更新了hyperloglog 数据结构,基数统计的算法 优点:占用的内存是固定的, 2^64不同元素,只需要12kb内存,如果从内存的角度考虑可以使用Hyperloglog。 应用:网页uv统计 传统的方式可以使用set保存用户id,但是会占用较大内存空间,而且比较麻烦;但是hyperloglog有0.81%的错误率,...原创 2021-12-15 21:40:56 · 142 阅读 · 0 评论 -
String
这是最简单Redis类型。如果你只用这种类型,Redis就像一个可以持久化的memcached服务器(注:memcache的数据仅保存在内存中,服务器重启后,数据将丢失)。 场景: 计数器 统计 粉丝 对象缓存存储 我们用redis-cli来玩一下字符串类型: setex (set with expire) 设置过期时间 127.0.0.1:6379[1]> setex ...原创 2021-12-15 19:42:19 · 54 阅读 · 0 评论 -
Redis 配置文件
Redis configuration file example. # Note that in order to read the configuration file, Redis must be started with the file path as first argument: # ./redis-server /path/to/redis.conf # 启动指令...原创 2021-12-15 19:37:34 · 234 阅读 · 0 评论 -
实现乐观锁
悲观锁 很悲观,认为什么时候都会出问题,无论什么都会加锁 乐观锁 很乐观,认为什么时候都不会出问题,所以不会上锁!更新数据的时候判断一下,在此期间是否有人修改过这个数据,mysql(version!) 获取version 更新的时候比较version 使用watch 单线程执行: 127.0.0.1:6379> set money 100 OK 127.0.0.1:637...原创 2021-12-15 19:18:30 · 227 阅读 · 0 评论 -
Redis 事务
MULTI 、 EXEC 、 DISCARD 和 WATCH 是 Redis 事务相关的命令。 两个重要保证: 事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断 事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。 EXEC 命令负责触发并执行事务中的所有命令: 如果客户端在使用 MUL...原创 2021-12-15 18:09:35 · 56 阅读 · 0 评论 -
Redis List
要说清楚列表数据类型,最好先讲一点儿理论背景,在信息技术界List这个词常常被使用不当。例如”Python Lists”就名不副实(名为Linked Lists),但他们实际上是数组(同样的数据类型在Ruby中叫数组) 一般意义上讲,列表就是有序元素的序列:10,20,1,2,3就是一个列表。但用数组实现的List和用Linked List实现的List,在属性方面大不相同。 ...原创 2021-12-15 17:57:42 · 218 阅读 · 0 评论 -
缓存穿透、雪崩
缓存穿透 缓存穿透是指用户查询数据,在数据库没有,自然在缓存中也不会有。这样就导致用户查询的时候,在缓存中找不到,每次都要去数据库再查询一遍,然后返回空。这样请求就绕过缓存直接查数据库,这也是经常提的缓存命中率问题。 解决方案: 如果查询数据库也为空,直接设置一个默认值存放到缓存,这样第二次到缓冲中获取就有值了,而不会继续访问数据库,这种办法最简单粗暴(缓存空对象)。 imag...原创 2021-12-15 14:58:56 · 62 阅读 · 0 评论 -
Redis 基础概念
Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Re...原创 2021-12-15 14:37:20 · 67 阅读 · 0 评论 -
Redis 哨兵模式
Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务: 监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。 提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。 自动...原创 2021-12-15 12:49:56 · 416 阅读 · 0 评论 -
Redis Hash表
Redis hash 看起来就像一个 “hash” 的样子,由键值对组成: 127.0.0.1:6379> HSET myhash field1 value1 (integer) 1 127.0.0.1:6379> hget myhash field1 "value1" 批量设置 127.0.0.1:6379> hmset myhash field2 valu...原创 2021-12-15 12:19:18 · 254 阅读 · 0 评论 -
Redis Set
Redis Set 是 String 的无序排列。SADD 指令把新的元素添加到 set 中。对 set 也可做一些其他的操作,比如测试一个给定的元素是否存在,对不同 set 取交集,并集或差,等等。 场景 粉丝、关注放一个集合中 共同关注、爱好、二度好友 添加元素 127.0.0.1:6379[1]> sadd myset 1 (integer) 1 127.0.0.1...原创 2021-12-15 10:55:07 · 159 阅读 · 0 评论 -
Redis bitmaps
位存储 位图的最大优点之一是,在存储信息时,它们通常可以极大地节省空间。例如,在一个系统中,不同的用户由增量用户ID表示,仅使用512MB内存就可以记住40亿用户的一位信息(例如,知道用户是否想要接收新闻稿)。 统计用户信息,活跃、不活跃。登录、未登录。打卡、未打卡。两个状态的,都可以用bitmaps,bitmaps 位图,数据结构,操作二进制位来记录记录,只有0、1两个状态。...原创 2021-12-15 06:27:41 · 348 阅读 · 0 评论 -
Redis benchmarks
Redis 自带了一个叫 redis-benchmark 的工具来模拟 N 个客户端同时发出 M 个请求。 (类似于 Apache ab 程序)。你可以使用 redis-benchmark -h 来查看基准参数。 image Summary: throughput summary: 5154.64 requests per second latency summary (mse...原创 2021-12-15 06:04:21 · 166 阅读 · 0 评论 -
Redis Zset
有序集合 排序集是一种数据类型,类似于set、hash的混合。与set一样,排序集合由唯一的、不重复的字符串元素组成,因此在某种意义上,排序集合也是集合。但排序集合中的每个元素都与一个称为分数的浮点值相关联,排序集中的元素是按顺序排列的。 排序情况: 如果A和B是两个得分不同的元素,那么如果A得分大于B得分,则A>B。 如果A和B的分数完全相同,那么如果A字符串在词典上大...原创 2021-12-15 01:29:52 · 55 阅读 · 0 评论 -
MySQL to Redis同步
方式1:使用MQ 对于此类业务,增加一个消费订阅基本没什么成本,服务本身也不需要做任何更改。唯一需要担心的一个问题是丢消息的情况?因为现在消息是缓存数据的唯一来源,一旦出现丢消息,缓存里缺失的那条数据永远不会被补上。 MQ 集群,像 Kafka 或者 RocketMQ,它都有高可用和高可靠的保证机制,可以满足数据可靠性要求的。 方式2:使用 Binlog 实时更新 Redis 缓存 数据更新服务...原创 2020-05-04 00:15:43 · 295 阅读 · 0 评论 -
Redis-pipeline
Redis Pipelining 可以实现请求/响应服务器,以便即使客户端尚未读取旧响应,它也能够处理新请求。这样就可以将多个命令发送到服务器而无需等待回复,最后只需一步即可读取回复。 这被称为流水线技术,并且是几十年来广泛使用的技术。例如,许多POP3协议实现已经支持此功能,大大加快了从服务器下载新电子邮件的过程。 Redis从很早就开始支持流水线操作,因此无论您运行什么版本,都可以使用Redi...原创 2019-04-20 15:03:11 · 129 阅读 · 0 评论 -
Redis主从和集群
主从概念 一个master可以拥有多个slave,一个slave又可以拥有多个slave。如此下去,形成了强大的多级服务器集群架构。 master用写数据,经统计:网站的读写比率是10:1 通过主从分离可以实现读写分离 master和slave都是一个redis实例(redis服务) 主从配置 Redis: 安装 sudo apt-get install redis-server 卸载 s...原创 2019-03-22 16:37:53 · 122 阅读 · 0 评论