• 开始找解决方案:上述的解决方案是在建立连接之后对连接添加或者连接出错以及之后的步骤出错都在10s之后重新调用方法本身实现重连
  • Redis 官方的虽然 redis 是用 C 编写的,但是在 redis 中没有使用 C 语言的字符串,而是自定义了一个数据结构叫 SDS (simple dynamic string) ——简单动态字符串。是可以修改的,类似java中的 ArrayList。同时它也不像 C 中的字符串那样遇到redis 的 string 类型可以包含任意数据,包括图片等二进制或者序列化的对象等。单个
  • redis的客户端(redis-cli)和服务端(redis-server)的通信是建立在tcp连接之上, 两者之间数据传输的编码解码方式就是所谓的redis通信协议。所以,只要我们的redis-cli实现了这个协议的解析和编码,那么我们就可以完成所有的redis操作。redis 协议设计的非常易读,也易于实现,关于具体的redis通信协议请参考:redis客户端和服务端的通信是建立tcp连接之上,所以第一步自然是先建立连接
  • 之前在一篇文章中提到过,因为业务的集群限流需求,在每次请求都需要拿到当前的日期,不过精确到天即可。上次给出的解决方案是,因为Calendar的性能问题,选择更加直接粗暴的方式,就是下面这个。通过当前的时间戳(毫秒级别),除以一天的毫秒数,得到的结果就是从1970 到今天经历过的天数。最近业务在使用限流功能时,需要实现限制接口每天调用1w次。
  • 1、Redis命令行执行Lua脚本01 、redis.call() 和 redis.pcall() 两个函数的参数可以是任意的 Redis 命令
  • Redis 官网:持久化就是把内存的数据写到磁盘中去,防止服务宕机了内存数据丢失。 Redis 提供了两种持久化方式:RDB(默认) 和AOF内容是redis通讯协议(RESP )格式的命令文本存储。 比较:
  • Redis是一个强大的内存数据结构存储,包含数据库,缓存和消息代理等多种用途。大多数人经常认为它不过是一个简单的键值存储,但其实它有更多的能力。下面给出一些实例
  • 和mysql的慢SQL日志分析一样,redis也有类似的功能,来帮助定位一些慢查询操作。Redis slowlog是Redis用来记录查询执行时间的日志系统。查询执行时间指的是不包括像客户端响应(talking)、发送回复等IO操作,而单单是执行一个查询命令所耗费的时间。
  • Redis需要考虑需要哪些keys以及对应的value使用合适的数据类型进行存储。在retwis例子中,我们需要users,user的粉丝列表, user的关注用户列表等等。和传统的关系型数据库一样,每个用户有一个唯一的id关联,使用INCR创建唯一的id。
  • Master/Slave 是一个在计算机编辑中广泛使用的术语,在Redis用来描述主/从进程。而有些人认为 master-slave 术语被认为具有侵犯性,所以出现了很多呼吁修改的声音。Redis作者 antirez 表示他很抱歉 master-slave 这个描述让许多人感到失望,但他不认为这个特定于上下文环境的术语具有侵犯性。所以他在数据库中使用 master-slave 当然不是以任何方式暗示“奴隶制度”。
  • 受限于缺乏针对 elf 文件的分析能力,对一些逻辑的跟踪仍有一定猜测成分,仅供参考。阿里云主机提供了一些恶意命令执行告警,定位到如下命令尝试跟踪 告警1 和 告警2 的代码,涉及大量中间文件(不过很多都只是base64一下),进行一些简单的梳理后,发现比较重要的三个文件。
  • 比如:某个广告主(如:天猫)想在我们的平台(如:今日头条)投放广告,当通过我们的广告系统新建广告的时候,该消息在同步给redis缓存(es)的时候丢失了,而我们又没有发现,造成该广告无法正常显示出来,那这损失就打了,如果1天都没有该广告的投放记录,那就有可能是上百万的损失了,所以消息的可靠传输多我们的广告系统也是很重要的。 其实,生活中这样的场景很场景,再比如:交易系统、订单系统都必须保证消息的可靠传输,否则,损失是巨大的!!!**持久化:**保证在服务器重启的时候可以保持不丢失相关信息,重点解决服务器的