
Redis实战
文章平均质量分 56
专注于redis缓存使用,后面将陆续推出redis个人实战,解决日常研发常用各种部署、配置、性能等方面内容。
漫天雪_昆仑巅
程序人生
展开
-
RedisCommandExecutionException: OOM command not allowed when used memory > ‘maxmemory‘.
最近服务上的Redis有部分业务报错了,很是奇怪,有部分正常,部分报错了,错误信息如下:2021-01-28 13:48:25 [http-nio-8082-exec-9] ERROR org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/].[dispatcherServlet] -Servlet.service() for servlet [dispatcherServlet] threw exceptionorg.sprin原创 2021-01-29 13:54:38 · 3108 阅读 · 1 评论 -
Redis部署模式
单机版特点:简单问题:1、内存容量有限 2、处理能力有限 3、无法高可用。主从复制Redis 的复制(replication)功能允许用户根据一个 Redis 服务器来创建任意多个该服务器的复制品,其中被复制的服务器为主服务器(master),而通过复制创建出来的服务器复制品则为从服务器(slave)。 只要主从服务器之间的网络连接正常,主从服务器两者会具有相同的数据,主服务器就会一直将发生在自己身上的数据更新同步 给从服务器,从而一直保证主从服务器的数据相同。特点:1、原创 2021-01-22 10:29:38 · 630 阅读 · 0 评论 -
Redis缓存穿透解决(布隆过滤器的应用)
不知道从什么时候开始,本来默默无闻的布隆过滤器一下子名声大燥,仿佛身在互联网,做着开发的,无人不知,无人不晓,哪怕对技术不是很关心的小伙伴也听过它的名号。我也花了不少时间去研究布隆过滤器,看了不少博客,无奈不是科班出身,又没有那么聪明的头脑,又比较懒...经过“放弃,拿起,放弃,拿起”的无限轮回,应该算是了解了布隆过滤器的核心思想,所以想给大家分享下。布隆过滤器的应用我们先来看下布隆过滤器的应用场景,让大家知道神奇的布隆过滤器到底能做什么。缓存穿透我们经常会把一部分数据放在Redis等缓存,转载 2020-07-08 20:38:31 · 4882 阅读 · 0 评论 -
Redis事务说明
Redis事务的生命周期:1. 事务的创建:使用MULTI开启一个事务2. 加入队列:在开启事务的时候,每次操作的命令将会被插入到一个队列中,同时这个命令并不会被真的执行3. EXEC命令进行提交事务Redis常用的事务命令:1. MULTI:使用该命令,标记一个事务块的开始,通常在执行之后会回复OK,(但不一定真的OK),这个时候用户可以输入多个操作来代替逐条操作,redis会将这些...原创 2020-04-28 10:02:40 · 8545 阅读 · 0 评论 -
Redis缓存淘汰策略
Redis缓存淘汰策略:永不回收策略(默认):保证已有的数据不丢失。 noeviction # 不删除策略, 达到最大内存限制时, 如果需要更多内存, 直接返回错误信息。volatile策略:只会对带过期时间的key进行淘汰。 volatile-lru # 尝试淘汰设置了过期时间的key,优先删除最近最少使用(less recently used ,LR...原创 2020-04-16 15:55:17 · 9520 阅读 · 0 评论 -
Redis内存优化
1.设置内存上限使用maxmemory参数限制最大可用内存,当超出内存上限maxmemory时使用LRU等删除策略释放空间以及防止所用内存超过服务器物理内存。2.配置内存回收策略Redis所用内存达到maxmemory上限时会触发相应的溢出控制策略。具体策略受maxmemory-policy参数控制,Redis支持6种策略,如下所示:noeviction:默认策略,不会删除任何数据...原创 2020-04-16 14:50:06 · 10309 阅读 · 0 评论 -
Redis实现锁机制
使用Redis实现分布式下用户锁,主要使用redis的setIfAbsent和expire方法来实现,例如:实现用户抽奖功能,主要代码如下://抽奖String randomStr = RandomUtils.nextInt(10000, 99999) + ":" + System.currentTimeMillis();try { String lockKey = "A...原创 2020-03-12 20:29:36 · 5469 阅读 · 0 评论 -
Redis Incr和ncrby
Redis Incr 命令将 key 中储存的数字值增1,如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。Redis Incrby 命令将 key 中储存的数字加上指定的增量值,如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。Redis Hincrby 命令用于为哈希表中的字段值加上指定增量值。...原创 2019-06-14 17:54:54 · 1047 阅读 · 0 评论 -
Redis集群数据分片机制说明
Redis 集群简介Redis Cluster 是 Redis 的分布式解决方案,在 3.0 版本正式推出,有效地解决了 Redis 分布式方面的需求。Redis Cluster 一般由多个节点组成,节点数量至少为 6 个才能保证组成完整高可用的集群,其中三个为主节点,三个为从节点。三个主节点会分配槽,处理客户端的命令请求,而从节点可用在主节点故障后,顶替主节点。如上图所示,该集群...转载 2020-03-24 15:53:15 · 11837 阅读 · 0 评论 -
Redis部署模式说明
单机版特点:简单问题:1、内存容量有限 2、处理能力有限 3、无法高可用。主从复制Redis 的复制(replication)功能允许用户根据一个 Redis 服务器来创建任意多个该服务器的复制品,其中被复制的服务器为主服务器(master),而通过复制创建出来的服务器复制品则为从服务器(slave)。 只要主从服务器之间的网络连接正常,主从服务器两者会具有相同...转载 2020-03-24 14:56:59 · 5785 阅读 · 0 评论 -
Redis实现秒杀库存加减
多线程并发下商品库存递减或者抢购商品数量累加,可以使用increment()方法通常使用异步的方式,前端=>用户抢购处理=>缓存=>队列=>持久化,可以使用入队列的方式来异步持久化已抢购到商品的用户数据,@Autowiredprivate RedisTemplate redisTemplate;//已销售商品数量累计(可以解决多线程并发问题)//incr...原创 2019-10-30 09:19:43 · 8779 阅读 · 0 评论 -
redis安装后不能远程连接问题解决
redis安装后,只能使用localhost或者127.0.0.1连接,无法使用公网IP连接!解决方法:1、关闭防火墙service iptables stop2、修改配置:将redis.conf配置文件中bind 127.0.0.1 修改为0.0.0.0,将/etc/hosts中新增一项 0.0.0.0 localhost 本机hostname修改后...原创 2019-04-12 13:59:47 · 912 阅读 · 1 评论 -
Redis连接池RedisPool使用
有关Redis 单机的具体配置,在前面的文章中已经有,非常简单,可以参考:https://blog.youkuaiyun.com/vtopqx/article/details/46832919Redis 配置完成后,有的需要在Java中连接,简单的连接操作可以参考:https://blog.youkuaiyun.com/vtopqx/article/details/49248245除了使用简单的连接之外...原创 2018-09-09 13:07:29 · 21331 阅读 · 1 评论 -
Redis集群Java连接
有关Redis 集群的具体配置,在前面的文章中已经有,可以参考:https://blog.youkuaiyun.com/vtopqx/article/details/49246521Redis 集群配置完成后,有的需要在Java中连接,以下是使用Java的相关连接代码:package com;import java.util.ArrayList;import java.util.Hash...原创 2018-09-09 12:57:04 · 2488 阅读 · 2 评论 -
Redis Sentinel Java连接
有关Redis Sentinel的具体配置,在前面的文章中已经有,可以参考:https://blog.youkuaiyun.com/vtopqx/article/details/49247285Redis Sentinel配置完成后,有的需要在Java中连接,其中有好些人问过我相关代码,所以特地去磁盘找了下以前写的demo例子代码,这里写上来备注一下,有需要的可以参考,不多说,很简单的实现,直接...原创 2018-09-09 12:48:39 · 2263 阅读 · 0 评论 -
Redis持久化RDB和AOF区别
RDB和AOF都可以Redis的持久化,两者有一定的区别:Redis默认是开启RDB的,AOF默认关闭,需要手动开启;RDB和AOF同时开启的情况下,会只加载AOF,两者都有相应的check命令,来进行检测修复--fix,RDB由系统fork出一个进程来执行默认是根据自定义的时间间隔内发生的变化,来触发是否需要生成快照文件进行保存,当然也可以使用命令来强制立刻保存,如:save...原创 2018-09-07 15:47:28 · 1087 阅读 · 0 评论 -
Redis可视化客户端工具
Redis也有相应的可视化客户端工具RedisDesktopManager,类似mysql的Navicat Premium这些,下载地址:https://redisdesktop.com/download如图:原创 2018-02-01 09:58:22 · 39319 阅读 · 1 评论 -
[ERR] Node is not empty. Either the node already knows other nodes (check with C
最近在给公司网管系统redis集群环境添加节点时候遇到一个问题,提示新增的Node不为空:[root@node00 src]# ./redis-trib.rb add-node --slave --master-id4f6424e47a2275d2b7696bfbf8588e8c4c3a5b95 172.168.63.202:7001172.168.63.202:7000.....原创 2015-12-09 14:21:19 · 265882 阅读 · 16 评论 -
[ERR] Not all 16384 slots are covered by nodes.
早些时间公司redis集群环境的某台机子冗机了,同时还导致了部分slot数据分片丢失;在用check检查集群运行状态时,遇到错误;[root@node01 src]# ./redis-trib.rb check172.168.63.202:7000Connecting to node 172.168.63.202:7000: OKConnecting to node 1原创 2015-12-09 14:31:22 · 75305 阅读 · 3 评论 -
Redis和MySQL方案
方案一:程序同时写Redis和MySQL读Redis方案二:程序写MySQL, 使用Gearman调用MySQL的UDF,完成对Redis的写读Redis方案三:程序写MySQL, 解析binlog(可参考canal),数据放入队列写Redis读Redis方案四:转载 2016-01-31 20:27:54 · 34470 阅读 · 2 评论 -
Redis图形化监控(redis-stat)
前言: 之前已经使用过Redis很长一段时间了,基本都是在命令行方面操作,后面发现除了在命令行之外还提供了图形化的一些监控,可以直观的查看Redis各个实例的一个使用情况。以下是常用的一些可以对Redis进行监控的插件:1、redis-stat2、redis-live3、redis-faina4、redis-broswer这里就只挑redis-s原创 2016-02-03 16:44:20 · 40953 阅读 · 1 评论 -
Redis Java连接使用
说明: 之前的Redis单机部署完成之后,开发人员需要在Java客户端连接Redis进行一些业务操作,以下是相关基础的java操作代码:package com;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import redis....原创 2015-10-19 12:00:49 · 35165 阅读 · 3 评论 -
Redis Sentinel服务配置
1 Redis Sentinel服务配置1.1简介Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务:监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel原创 2015-10-19 10:57:17 · 47466 阅读 · 2 评论 -
Redis节点配置
说明: Redis集群搭建完成之后,对于后续的操作和使用中进程需要对进群中的服务节点Node进行新增、删除、修改之类的操作,以下记录了在具体环境中对Node的处理:1 节点配置管理1.1 参数说明创建集群的操作可以通过使用位于Redis安装文件夹内的redis-trib.rb来完成,redis-trib.rb是使用ruby开发的Redis集群管理程序,具有创建集群,检查原创 2015-10-19 10:14:53 · 29621 阅读 · 1 评论 -
Redis集群配置
1 Redis集群配置1.1简介Redis集群是一个由多个节点组成的分布式服务器群,它具有复制、高可用和分片特性;Redis集群没有中心节点,并且带有复制和故障转移特性,这可以避免单个节点成为性能瓶颈,或者因为某个节点下线而导致整个集群下线;集群中的主节点负责处理槽(存储数据),从节点则是主节点的复制品;Redis集群将整个数据库分成16384个槽,数据库中的每个键都属于原创 2015-10-19 10:05:39 · 30136 阅读 · 1 评论 -
Redis命令使用
之前安装好了Redis之后,对于如何使用,还不是特别清楚,因此百度了下,同时结合了下自己常用的命令,做了下整合,以下是一些相关常用的命令; 1 Redis数据类型及应用场景Redis最为常用的数据类型主要有以下五种:· String· Hash· List· Set· Sortedset原创 2015-07-10 17:49:06 · 25299 阅读 · 2 评论 -
Redis持久化配置
对于Redis来说是存储在缓存之中的,因此缓存数据丢失问题一直是程序员们相当关注的话题,因此对缓存中的数据定时进行持久化的必要性就相当突出了,Redis持久化分别有RDB和AOF两种方式,以下是这两种方式的相关配置:1 第一种: RDB持久化方式1.1 概述默认redis是会以快照的形式将数据持久化到磁盘的(一个二进制文件,dump.rdb,这个文件名字可以指定),在配置文件...原创 2015-07-10 17:40:26 · 50067 阅读 · 1 评论 -
Redis主从配置
1 Redis主从服务配置1.1概述Redis的主从复制功能非常强大,一个master可以拥有多个slave,而一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构。主从同步,有以下好处:实现数据的备份,减少单点故障带来的损失;有利于实现负载均衡。本来一台服务器负责所有数据的读写,而通过主从同步,可以让多个从服务器负责数据的读,而主服务器主...原创 2015-07-10 17:26:22 · 25377 阅读 · 5 评论 -
Redis_conf配置文件说明
1. # Redis示例配置文件 2. 3. # 注意单位问题:当需要设置内存大小的时候,可以使用类似1k、5GB、4M这样的常见格式: 4. # 5. # 1k => 1000 bytes 6. # 1kb => 1024 bytes 7. # 1m => 1000000 bytes 8. # 1mb => 1024*1024 byte原创 2015-07-10 17:24:18 · 58766 阅读 · 2 评论 -
Redis远程连接
1.1 远程连接1) 默认无权限控制:远程服务连接:$ redis-cli -h 127.0.0.1 -p 6379远程服务停止:$ redis-cli -h 172.168.10.254 -p6379 shutdown 2) 有权限控制时(加上-a 密码):redis-cli -h 127.0.0.1 -p 6379 -a 123456 除了在登原创 2015-07-10 17:22:14 · 68778 阅读 · 2 评论 -
Redis用户验证设置
安装了Redis之后一直没有对其进行安全或者用户控制,后面针对业务的要求,对Redis新增了用户验证,以下是具体的配置:1.1 设置验证密码设置验证密码的方式有种:1) 修改配置文件redis.conf设置: 2)通过config命令可以设置密码以及获取当前用户密码,如下图:1. redis 127.0.0.1:6379[1]> config s原创 2015-07-10 17:17:31 · 50646 阅读 · 2 评论 -
Redis注册服务
之前安装好了Redis服务之后,每次开启与关闭都需要去redis目录下去运行脚本,相当的繁琐,于是试着将redis的注册成系统服务,如此便可以方便的对其进行各种操作,以下为具体的注册服务配置:将Redis做成一个服务 service 1.复制redis init脚本到/etc/rc.d/init.d目录按以上步骤默认安装Redis时,其服务脚本位于: /usr/softwa原创 2015-07-10 17:12:30 · 29932 阅读 · 2 评论 -
Redis安装(单机)
之前一段时间由于业务需要研究了下Redis相关信息,现特将Redex的从单机到集群的各种配置在个人博客上做更新,以便需要的道友!1概述Redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库。 Redis开创了一种新的数据存储思路,使用Redis,我们不用在面对功能单调的数据库时,把精力放在如何把大象放进冰箱这样的问题...原创 2015-07-10 17:04:38 · 27828 阅读 · 3 评论