随笔分类 - redis
redis学习与使用分享
摘要:登录到redis上查询 ./redis cli h IP p port a passwd redis info memory 查询,内存已耗尽 查询配置文件,发现之前配置最大内存的策略设置为 maxmemory policy volatile lru 此配置只是清楚设置过期时间的key值,然而本应用
阅读全文
摘要:慢查询的两个参数配置 慢查询只记录命令执行时间,并不包括命令排队和网络传输时间。因此客户端执行命令的时间会大于命令实际执行时间。因为命令执行排队机制,慢查询会导致其他命令级联阻塞,因此当客户端出现请求超时,需要检查该时间点是否有对应的慢查询,从而分析出是否为慢查询导致的命令级联阻塞 Redis提供了
阅读全文
摘要:redis订阅关闭异常解决 应用程序模块订阅redis运行一段时间出现一直重连Redis服务,日志如下: 解决方案 redis.conf配置文件,把下面的值调大即可
阅读全文
摘要:设置redis key的生存过期时间 Redis 有四个不同的命令可以用于设置键的生存时间(键可以存在多久)或过期时间(键什么时候会被删除) : EXPlRE 命令用于将键key 的生存时间设置为ttl 秒。 PEXPIRE 命令用于将键key 的生存时间设置为ttl 毫秒。 EXPIREAT 命令
阅读全文
摘要:String类型:一个String类型的value最大可以存储512M List类型:list的元素个数最多为2^32-1个,也就是4294967295个。 Set类型:元素个数最多为2^32-1个,也就是4294967295个。 Hash类型:键值对个数最多为2^32-1个,也就是42949672
阅读全文
摘要:# Pika 端口 port : 9221 # pika进程数量,不建议超过核心数量,pika是多线程的 thread-num : 1 # Sync 线程数量 sync-thread-num : 6 # sync 处理线程的任务队列大小,一般没有必要修改 sync-buffer-size : 10
阅读全文
摘要:不一致产生的原因 我们在使用redis过程中,通常会这样做:先读取缓存,如果缓存不存在,则读取数据库。伪代码如下: 写数据库的伪代码如下: 不管是先写库,再删除缓存;还是先删缓存,再写库,都有可能出现数据不一致的情况 因为写和读是并发的,没法保证顺序,如果删了缓存,还没有来得及写库,另一个线程就来读
阅读全文
摘要:在实际工作过程中,可以使用lua脚本来解决一些需要保证原子性的问题,而且lua脚本可以缓存在redis服务器上,势必会增加性能。 不过lua也会有很多限制,在使用的时候要注意。 在Redis中执行Lua脚本有两种方法:eval和evalsha eval 其中: <1> script:你的lua脚本
阅读全文
摘要:Redis 集群的时候报错: 修改配置 redis.conf 配置集群 修改redis.config,添加cluster-enabled yes
阅读全文
摘要:Redis有自己的内存分配器,当key value对象被移除时,Redis不会马上向操作系统释放其占用内存。redis之所以这样的设计有两个原因。 OS可能会将释放内存交换到虚拟内存,但OS的虚拟内存又是物理文件,其IO读写效率较低,从而影响Redis性能表现 OS的虚拟内存换入换出是基于Page机
阅读全文
摘要:Redis中数据存储模式有两种:cache-only以及persistence cache-only:只作为"缓存"服务,不提供数据的持久化操作,数据在服务停止后消失,因此在此模式下也不存在数据恢复的问题,该模式的优点是效率高,容易扩展,缺点是安全性较低。 persistence:该模式下将内存中的
阅读全文
摘要:Redis的Pub/Sub机制使用非常简单的方式实现了观察者模式,但是在使用过程中我们发现,它仅仅是实现了发布订阅机制,但是很多的场景没有考虑到。例如一下的几种场景: 1.数据可靠性无法保证 一个redis_cli发送消息的时候,消息是无状态的,也就是说负责发送消息的redis_cli只管发送消息,
阅读全文
摘要:大多数情况下,我们都会通过请求-相应机制去操作redis。只用这种模式的一般的步骤是,先获得jedis实例,然后通过jedis的get/put方法与redis交互。由于redis是单线程的,下一次请求必须等待上一次请求执行完成后才能继续执行。然而使用Pipeline模式,客户端可以一次性的发送多个命
阅读全文