
Redis
文章平均质量分 68
mango_54
这个作者很懒,什么都没留下…
展开
-
笔记:redis连接错误:MISCONF Redis is configured to save RDB snapshots, but it is currently not able to ...
今天在使用redis时,像redis中写入数据时,出现错误:(error) MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk. Commands that may modify the data set are disabled, because th...原创 2020-01-03 17:14:06 · 584 阅读 · 0 评论 -
【笔记】Redis深度历险-------字典dict
为什么redis dict 扩容的时候要考虑 bgsave, 但是缩容的时候不用考虑?1.bgsave时,dict不扩容是为了尽可能减少内存页过多分离,系统后需要更多的开销去回收内存。2.bgsave是数据持久化到磁盘的过程,而且缩容的条件是元素个数少于数组的10%,不产生过多的内存碎片或内存分离。...原创 2019-12-11 16:02:08 · 391 阅读 · 0 评论 -
【笔记】Redis深度历险-------保护Redis
使用redis时,需要注意安全风险以及进行必要的防范措施,避免数据泄露和丢失、避免主机权限遭到黑客窃取,以及避免人为操作的失误。指令安全Redis有一些非常危险的指令,这些指令会对Redis的稳定和数据安全造成非常严重的影响。比如keys指令会导致Redis卡顿,flushdb和fulshall会清空Redis的所有数据。Redis配置文件中提供了rename-command指令用来将指令修...原创 2019-12-09 11:03:03 · 164 阅读 · 0 评论 -
【笔记】Redis深度历险-------优胜劣汰(LRU算法)
当Redis内存超出物理内存限制时,内存的数据会开始和磁盘产生频繁的交换(swap)。交换会让Redis的性能急剧下降,对于访问量较大的Redis来说,这样的龟速存取效率基本上等于不可用。在生产环境中我们是不允许Redis出现交换行为的,为了限制最大使用内存,Redis提供了配置参数maxmemory来限制内存超出期望大小。当实际内存超出maxmemory时,Redis提供了几种可选策略(ma...原创 2019-12-06 09:59:05 · 185 阅读 · 0 评论 -
Linux下yum安装redis
1、yum install redis --查看是否有redis yum 源[root@localhost logs]# yum install redisLoaded plugins: fastestmirrorbase ...原创 2019-12-02 09:15:20 · 241 阅读 · 0 评论 -
【笔记】Redis深度历险----核心原理与应用实战
为什么Redis先执行指令,之后在记录AOF日志,而不是像其他存储引擎一样反过来呢?因为Redis会在收到客户端修改指令后,进行参数校验、逻辑处理,如果没有问题,就立即将该指令文本存储到AOF日志中,也就是说,先执行指令才将日志存盘。如果反过来,则可能会存入很多无效的指令(或者错误指令)。...原创 2019-11-30 21:41:26 · 411 阅读 · 1 评论 -
rabbitmq和redis用作消息队列的区别
将redis发布订阅模式用做消息队列和rabbitmq的区别:可靠性redis :没有相应的机制保证消息的可靠消费,如果发布者发布一条消息,而没有对应的订阅者的话,这条消息将丢失,不会存在内存中;rabbitmq:具有消息消费确认机制,如果发布一条消息,还没有消费者消费该队列,那么这条消息将一直存放在队列中,直到有消费者消费了该条消息,以此可以保证消息的可靠消费;实时性redis:实时性...原创 2019-11-29 14:50:13 · 141 阅读 · 0 评论 -
【笔记】Redis深度历险-------使用HyperLogLog 数据结构进行估数(JAVA)
HyperLogLog 数据结构进行估数,用于统计 如计算网页每天的用户的访问数量UV, 可以解决很多精度要求不是很高的统计问题package com.ryz2593.happy.study.redis;import redis.clients.jedis.Jedis;/** * HyperLogLog 数据结构进行估数,用于统计 如计算网页每天的用户的访问数量UV * 可以解决很多精...原创 2019-11-25 11:08:54 · 154 阅读 · 0 评论 -
【笔记】Redis深度历险-------使用Redis来实现简单限流策略
问题描述限流的目的主要是控制用户行为,避免垃圾请求,比如在一些社区论坛中,用户的发帖,回复、点赞等行为都要严格受控。一般要严格限定某行为在规定时间内被运行的次数,超过了次数就是非法行为。对非法行为做相应的处理。一般在应用场景中,会限制用户的某个行为在规定的时间内只能允许发生N次。解决方案使用滑动时间窗口(定宽),只需要保留这个时间窗口,窗口之外的数据都可以砍掉。zset中的value没有什...原创 2019-11-25 10:46:14 · 233 阅读 · 0 评论 -
【笔记】Redis深度历险-------使用Redis中的zset(有序列表)实现延时队列 JAVA实现
延时队列可以通过Redis的zset(有序列表)来实现。将消息序列化成一个字符串作为zset的value这个消息的到期处理时间作为score然后用多个线程轮训zset获取到期的任务进行处理多个线程处理是为了保障可用性,万一挂了一个线程还有其他线程可以处理。package com.ryz2593.happy.study.redis;import com.alibaba....原创 2019-11-22 10:50:48 · 2135 阅读 · 0 评论 -
Redis的list数据结构 lpush、rpush、lpop、rpop等常用操作
lpush添加一个或多个元素插入到list的头部lpush key [values...]127.0.0.1:6379> lpush mylist java c++ c(integer) 3127.0.0.1:6379> lrange mylist 0 -11) "c"2) "c++"3) "java"lpop从 list 中删除并返回第一个元素lpop k...原创 2019-11-21 17:22:57 · 27609 阅读 · 0 评论 -
【笔记】Redis深度历险-------redis分布式锁原理与实现
分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。分布式锁:线程锁:主要用来给方法、代码块加锁。当某个方法或代码使用锁,在同一时刻仅有一个线程执行该方法或该代码段。线程锁只在同一JVM中有效果,因为线程锁的实现在根本上是依靠线程之间共享内存实现的,比如synchronized是共享对象头,显示锁Lock是共享某个变量(s...原创 2019-11-21 09:33:08 · 141 阅读 · 0 评论