
redis | Lua
文章平均质量分 76
redis相关
戴国进
往后余生,专注人工智能领域!!!
展开
-
docker 安装 redis、redisinsight、可视化监控ganafa+prometheus
首先我们将使用Docker来安装Redis,注意下载Redis的完全体版本RedisMod,它是内置了所有模块的增强版Redis!RedisInsight的Redis监控功能比较简单,个人比较喜欢使用Grafana来监控Redis,Grafana的具体使用可以参考Grafana使用教程。连接到redismod需要使用到它的容器IP地址,使用如下命令查看redismod容器的IP地址;配置Redis地址信息,注意使用redismod的容器IP地址;下来下载Prometheus的Docker镜像;.......原创 2022-07-20 20:36:43 · 2099 阅读 · 0 评论 -
redis-cli 命令详解
命令使用:redis-cli [OPTIONS] [cmd [arg [arg ...]]]选项说明: -h <hostname> Server hostname (default: 127.0.0.1). ip地址 -p <port> Server port (default: 6379). 服务器端口号 -s <socket> Server socket (overrides hostname an原创 2022-04-08 11:39:22 · 18611 阅读 · 0 评论 -
深度剖析:Redis分布式锁到底安全吗?看完这篇文章彻底懂了
因为我发现网上 99% 的文章,并没有把这个问题真正讲清楚。导致很多读者看了很多文章,依旧云里雾里。例如下面这些问题,你能清晰地回答上来吗? 基于 Redis 如何实现一个分布式锁? Redis 分布式锁真的安全吗? Redis 的 Redlock 有什么问题?一定安全吗? 业界争论 Redlock,到底在争论什么?哪种观点是对的? 分布式锁到底用 Redis 还是 Zookeeper? 实现一个有「容错性」的分布式锁,都需要考虑哪些问题? 这篇文转载 2021-11-25 11:48:58 · 496 阅读 · 1 评论 -
Redis 16 个使用场景
1、缓存String类型例如:热点数据缓存(例如报表、明星出轨),对象缓存、全页缓存、可以提升热点数据的访问数据。2、数据共享分布式String 类型,因为 Redis 是分布式的独立服务,可以在多个应用之间共享例如:分布式Session<dependency><groupId>org.springframework.session</groupId><artifactId>spring-session-data-...原创 2021-11-03 10:08:27 · 328 阅读 · 0 评论 -
Redis 与 MySQL 双写一致性如何保证?
前言四月份的时候,有位好朋友去美团面试。他说,被问到Redis与MySQL双写一致性如何保证?这道题其实就是在问缓存和数据库在双写场景下,一致性是如何保证的?本文将跟大家一起来探讨如何回答这个问题。谈谈一致性一致性就是数据保持一致,在分布式系统中,可以理解为多个节点中数据的值是一致的。 强一致性:这种一致性级别是最符合用户直觉的,它要求系统写入什么,读出来的也会是什么,用户体验好,但实现起来往往对系统的性能影响大 弱一致性:这种一致性级别约束了系统在写入成功后,不承诺.转载 2021-10-22 09:09:57 · 3464 阅读 · 0 评论 -
Redis 面霸篇:从高频问题透视核心原理
Redis 为什么这么快?很多人只知道是 K/V NoSQl 内存数据库,单线程……这都是没有全面理解 Redis 导致无法继续深问下去。这个问题是基础摸底,我们可以从 Redis 不同数据类型底层的数据结构实现、完全基于内存、IO 多路复用网络模型、线程模型、渐进式 rehash…...到底有多快?我们可以先说到底有多快,根据官方数据,Redis 的 QPS 可以达到约 100000(每秒请求数),有兴趣的可以参考官方的基准程序测试《How fast is Redis?》,地址:https原创 2021-09-22 15:50:24 · 362 阅读 · 0 评论 -
面试官:Redis用过是吧?那你讲讲Redis都有哪些监控指标?
监控指标性能指标: Performance 内存指标: Memory 基本活动指标:Basic activity 持久性指标: Persistence 错误指标: Error性能指标:Performance| Name| Description| -------- | -------- | -------- || latency |Redis响应一个请求的时间| instantaneous_ops_per_sec|平均每秒处理请求总数|hi rate(calculated)|缓存命原创 2021-09-22 14:29:44 · 425 阅读 · 0 评论 -
Redis中主、从库宕机如何恢复
1、什么是哨兵哨兵是对Redis的系统的运行情况的监控,它是一个独立进程,功能有二个: 监控主数据库和从数据库是否运行正常; 主数据出现故障后自动将从数据库转化为主数据库; 2、原理单个哨兵的架构:多个哨兵的架构:多个哨兵,不仅同时监控主从数据库,而且哨兵之间互为监控。多个哨兵,防止哨兵单点故障。3、环境当前处于一主多从的环境中:4、设置哨兵启动哨兵进程首先需要创建哨兵配置文件:vimsentinel.conf输入内容:.转载 2021-09-22 11:58:35 · 562 阅读 · 0 评论 -
Redis 唯快不破的秘密
Redis 全景图全景图可以围绕两个维度展开,分别是:应用维度:缓存使用、集群运用、数据结构的巧妙使用系统维度:可以归类为三高 高性能:线程模型、网络 IO 模型、数据结构、持久化机制; 高可用:主从复制、哨兵集群、Cluster 分片集群; 高拓展:负载均衡 Redis 系列篇章围绕如下思维导图展开,这次从《Redis 唯快不破的秘密》一起探索 Redis 的核心知识点。唯快不破的秘密很多人仅仅只是知道基于内存实现,其他核心的原因模凌两可。Red.原创 2021-09-14 16:51:12 · 386 阅读 · 0 评论 -
Lua 嵌入 Redis 解决库存秒杀 - 接口限流
<?php/** * Created by PhpStorm. * redis 销量超卖秒杀解决方案 * redis 文档:http://doc.redisfans.com/ * ab -n 10000 -c 3000 http://localhost/demo.php 模拟并发 */$redis = new Redis();$redis->connect('127.0.0.1',6379);//1. 对某一个键加锁,这个键是我们自己设置,起到监视作业$redis.原创 2021-08-10 22:29:31 · 526 阅读 · 0 评论 -
Redis 批量删除 key 的命令
redis中没有直接根据正则表达式删除key的命令,只有del key1 key2...命令但是redis中有通过正则表达式获取key的命令:keys "正则表达式"可以借助于xargs命令实现批量删除key,把查出来的key值当做参数传给delredis-cli keys "mailspec*" | xargs del完整命令:redis-cli -h 192.169.1.71 -p 7001 -a 123456 keys em* | xargs -r -t -n1 ./r原创 2021-08-07 17:09:49 · 1039 阅读 · 0 评论 -
秒杀/接口限流(PHP,Redis,Lua)
在开发接口服务器的过程中,为了防止客户端对于接口的滥用,保护服务器的资源, 通常来说我们会对于服务器上的各种接口进行调用次数的限制。比如对于某个 用户,他在一个时间段(interval)内,比如 1 分钟,调用服务器接口的次数不能够 大于一个上限(limit),比如说 100 次。如果用户调用接口的次数超过上限的话,就 直接拒绝用户的请求,返回错误信息。最开始的想法对于实现方法的第一印象,大概是,给每个用户一个配额,次数为 Q, 这个配额在用户第一次调用接口的时候分配给用户。然后在接下去的 P 时间转载 2021-07-22 09:54:57 · 1137 阅读 · 0 评论 -
PHP中使用redis 执行lua脚本
在php中,可以通过redis执行lua脚本1、脚本<?php$redis = new Redis(); #实例化redis类$redis->connect('127.0.0.1'); #连接服务器 $lua = <<<SCRIPT return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}SCRIPT;//对应的redis命令如下 eval "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]原创 2020-09-17 15:55:22 · 7852 阅读 · 0 评论 -
php使用redis的scan命令时遇到的坑
以前的项目中有用到redis的keys命令来获取某些key,这个命令在数据库特别大的情况会block很长一段时间,所以有很大的安全隐患,所以这次打算优化一下。官网建议使用scan命令来代替。于是就用了……以下是使用scan命令来匹配相应模式的key的代码:$redis = new Redis();$redis->connect('localhost', 6379);$iterator = null;while ($keys = $redis->scan($iterator,.原创 2020-12-16 16:41:58 · 4335 阅读 · 0 评论 -
Redis 的 KEYS 命令不能乱用,线上可用SCAN替代
KESY 命令时间复杂度: O(N) , 假设Redis中的键名和给定的模式的长度有限的情况下,N为数据库中key的个数。Redis Keys 命令用于查找所有符合给定模式 pattern 的 key尽管这个操作的时间复杂度是 O(N), 但是常量时间相当低。例如,在一个普通笔记本上跑Redis,扫描100万个key只要40毫秒。命令格式 KEYS patternWarning: 生产环境使用 KEYS 命令需要非常小心。在大的数据库上执行命令会影响性能。这个命令适合用来调试和特原创 2020-12-16 15:51:11 · 6427 阅读 · 0 评论 -
Redis 集合高级用法
作者:不才陈某链接:https://www.zhihu.com/question/433475778/answer/1612399018来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。前言不知你大规模的用过Redis吗?还是仅仅作为缓存的工具了?在Redis中使用最多的就是集合了,举个例子,如下场景:签到系统中,一天对应一系列的用户签到记录。 电商系统中,一个商品对应一系列的评论。 交友系统中,某个用户的一系列的好友。Redis中集合的特点无非是一个.转载 2020-12-07 09:09:36 · 4168 阅读 · 0 评论 -
Redis set数据类型的常见业务场景
set类型是string类型的集合,其特点是集合元素无序且不重复,每个集合最多可以存储 232- 1 个元素(40多亿),set类型主要有以下应用场景。 1. 好友/关注/粉丝/感兴趣的人集合 set类型唯一的特点使得其适合用于存储好友/关注/粉丝/感兴趣的人集合,集合中的元素数量可能很多,每次全部取出来成本不小,set类型提供了一些很实用的命令用于直接操作这些集合,如 a. sinter命令可以获得A和B两个用户的共同好友 b. sismember命令可以判断A...原创 2020-10-27 13:48:23 · 6331 阅读 · 0 评论 -
php + Redis乐观锁解决超卖问题代码案例及Redis的事务讲解
是什么:可以一次执行多个命令,本质是一组命令的集合。一个事务中的所有命令都会序列化,按顺序串行化的执行而不会被其他命令插入能干嘛:一个队列中,一次性、顺序性、排他性的执行一系列命令 (要和pipeline区分开)Redis其实是部分支持事务,但是事务的错误模式并不统一2|0使用方法2|1常用命令2|2正常开启Redis事务2|3放弃事务2|4事务的错误模式(一):全体连坐2|5事务的错误模式(二):冤头债主3|0...原创 2020-09-25 14:33:03 · 6388 阅读 · 0 评论 -
redis如何设置密码
密码设置这里简单介绍一下redis如何设置密码redis密码设置有两种方式,一种需要重启redis服务,一种不需要重启redis服务。需要重启redis服务的设置方式即找到redis的配置文件—redis.conf文件,然后修改里面的requirepass,这个本来是注释起来了的,将注释去掉,并将后面对应的字段设置成自己想要的密码,保存退出。重启redis服务,即可。我这里是设置密码成了123不需要重启redis服务的密码设置方式这种相对简单,连接redis之后,通过命原创 2020-07-16 17:22:05 · 9145 阅读 · 0 评论 -
redis 配置文件详解 - 下面所有内容都是
# Redis配置文件样例# Note on units: when memory size is needed, it is possible to specifiy# it in the usual form of 1k 5GB 4M and so forth:## 1k => 1000 bytes# 1kb => 1024 bytes# 1m => 1000000 bytes# 1mb => 1024*1024 bytes# 1g => 1000000.原创 2020-07-16 17:06:32 · 8885 阅读 · 0 评论 -
基于Docker搭建Redis哨兵集群
步骤一:下载Redis镜像docker pull redis:latest步骤二:Redis集群搭建1、运行Redis镜像docker run --name redis-6379 -p 6379:6379 -d hub.c.163.com/library/redisdocker run --name redis-6380 -p 6380:6379 -d hub.c.163.com/library/redisdocker run --name redis-6381 -p 6381:6.原创 2020-05-18 20:00:20 · 7500 阅读 · 0 评论