需求介绍 安装 Redis,熟悉 Redis 的命令以及整合Redis,在Spring 中使用Redis. 代码实现 Redis 内置了 16 个库,索引是 0-15 ,默认选择第 0 个 Redis 的常用命令: // 切换到第 1 个库 select 1 // 刷新一个库 flushdb // 查看这个数据库里面有哪些key Keys * String 类型数据的操作: // 设置key的值 set k1 1 // 获得key的值 get k1 // 删除key的值 del k1 // 对k…
一.概述      Redis的强大性能很大程度上都是因为数据时存在内存中的,然而当Redis重启时,所有存储在内存中的数据将会丢失,所以我们要将内存中的数据持久化. Redis支持两种数据持久化的方式: RDB方式和AOF方式. (1)RDB方式会根据配置的规则定时的将内存中的数据持久化到硬盘上. (2)AOF则是将redis执行过的所有写指令记录下来,在下次redis重新启动时,只要把这些写指令从前到后再重复执行一遍,就可以实现数据恢复了.      其实RDB和AOF两种方式也可以同时使用…
转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/142.html 一.特殊编码: 自从Redis 2.2之后,很多数据类型都可以通过特殊编码的方式来进行存储空间的优化.其中,Hash.List和由Integer组成的Sets都可以通过该方式来优化存储结构,以便占用更少的空间,在有些情况下,可以省去9/10的空间.    这些特殊编码对于Redis的使用而言是完全透明的,事实上,它只是CPU和内存之间的一个交易而言.如果内…
在传统的 Java Web 项目中,使用数据库进行存储数据,但是有一些致命的弊端,这些弊端主要来自于性能方面. 由于数据库持久化数据主要是面向磁盘,而磁盘的读/写比较慢,在一般管理系统中,由于不存在高并发,因此往往没有瞬间需要读/写大量数据的要求,这个时候使用数据库进行读/写时没有太大的问题的,但是在互联网中,往往存在大数据量的需求,比如,需要在极短的时间内完成成千上万次的读/写操作,这个时候往往不是数据库能够承受的,极其容易造成数据库系统瘫痪,导致服务宕机的严重生产问题. 为了克服这些问题,J…
Redis数据类型: Redis控制5种数据类型:String,list,hash,set,sorted-set 添加数据,删除数据,获取数据,查看有多少个元素,判断元素是否存在 key通用操作 JRedis:java操作redis 多数据库: 一个Redis实例可以包括多个数据库,客户端可以指定连接某个Redis数据库就好 一个Redis实例最多提供16个数据库,0~15 选中仓库: select 0 将当前仓库下的某个键值对的数据移动到其他仓库 move name 1 测试连接是否存活: p…
Redis 有序集合(sorted set) Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员. 不同的是每个元素都会关联一个double类型的分数.redis正是通过分数来为集合中的成员进行从小到大的排序. 有序集合的成员是唯一的,但分数(score)却可以重复. 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1). 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员). 实例 redis 127.0.0.…
一.是什么 官网 行话:也就是我们所说的主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主 二.能干嘛 读写分离  容灾恢复 三.怎么玩 1.配从(库)不配主(库) 2.从库配置:slaveof 主库IP 主库端口 说明: 每次与master断开之后,都需要重新连接,除非你配置进redis.conf文件 Info replication 3.修改配置文件细节操作 [1]拷贝多个redis.conf文件 [2]开启dae…
原文地址:https://yq.aliyun.com/articles/257459# 背景 Redis作为一个高性能的内存NoSQL数据库,其容量受到最大内存限制的限制. 用户在使用Redis时,除了对性能,稳定性有很高的要求外,对内存占用也比较敏感.在使用过程中,有些用户会觉得自己的线上实例内存占用比自己预想的要大. 事实上,实例中的内存除了保存原始的键值对所需的开销外,还有一些运行时产生的额外内存,包括: 垃圾数据和过期Key所占空间 字典渐进式Rehash导致未及时删除的空间 Redis…
在分布式系统架构设计中高可用是必须考虑的因素之一.高可用通常是指,通过设计减少系统不能提供服务的时间.而单点是系统高可用的最大的败笔,如果单点出现问题的话,那么整个服务就不能使用了,所以应该尽量在系统设计的过程中避免单点.对于 redis 服务也是这样,今天我们就来实现 Redis 的高可用的基础 --> 主从配置. 主从概念 有多台 Redis 服务器(至少两台或以上),其中一台是主服务器(master) 负责写指令的操作,其他都是从服务器(slave)负责读指令的操作. 主从服务器之间会进行…
目录 1.演示数据类型的实现 2.简单动态字符串 3.链表 4.字典 5.跳跃表 6.整数集合 7.压缩列表 8.总结 上一篇博客我们介绍了 redis的五大数据类型详细用法,但是在 Redis 中,这几种数据类型底层是由什么数据结构构造的呢?本篇博客我们就来详细介绍Redis中五大数据类型的底层实现. 回到顶部 1.演示数据类型的实现 上篇博客我们在介绍 key 相关命令的时候,介绍了如下命令: OBJECT ENCODING key 该命令是用来显示那五大数据类型的底层数据结构. 比如对于…
Redis 列表(List) Redis列表是简单的字符串列表,按照插入顺序排序.你可以添加一个元素到列表的头部(左边)或者尾部(右边) 一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素). 实例 redis 127.0.0.1:6379> LPUSH runoobkey redis (integer) 1 redis 127.0.0.1:6379> LPUSH runoobkey mongodb (integer) 2 redis 127.0.…
在上一章我们从宏观上介绍了ThreadPoolExecutor,本文将深入解析一下线程池的具体实现原理 原理解析 线程池状态 在ThreadPoolExecutor中定义了一个volatile变量,另外定义了几个static final变量表示线程池的各个状态: volatile int runState; static final int RUNNING = 0; static final int SHUTDOWN = 1; static final int STOP = 2; static…
1.ArrayList的实现原理是怎样的呢? ------>例如:ArrayList本质是实现了一个可变长度的数组. 假如这个数组的长度为10,调用add方法的时候,下标会移动到下一位,当移动到70%左右的时候.会创建一个新数组,而这个新数组的长度变成2倍或3倍等等.将原来的数据复制到新数组中,新的内容会接着添加下一位.这就是ArrayList的实现原理.   2.CopyOnWriteArrayList的实现原理是怎样的呢? ------> 它的实现原理是在ArrayList的实现原理的基础…
一:redis主从复制的原理,步骤.   第一步:复制初始化 --->从redis启动后,会根据配置,向主redis发送SYNC命令.2.8版本以后,发送PSYNC命令. --->主redis收到SYNC命令后,开始在后台保存快照文件(即RDB持久化的过程),并将保存快照期间接收到的命令缓存起来. --->当主redis完成快照后,主redis会将快照文件和缓存命令发送给从redis.复制初始化结束. --->当主redis的复制初始化结束后,主redis每当收到写命令就会异步将写…
python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法window安装redis,下载Redis的压缩包https://github.com/dmajkic/redis/downloads 如redis-2.4.5-win32-win64.zip下载完后将其解压放在自己要放的目录下如果你是32位的话就进32bit的文件夹,64位就进64bit文件夹 文件夹进去后会看到几个文件:redis-benchmark.exe: 性能…
如约而至,Java 10 正式发布!   3 月 20 日,Oracle 宣布 Java 10 正式发布. 官方已提供下载:http://www.oracle.com/technetwork/java/javase/downloads/index.html . 在 Java 9 之后,Java 采用了基于时间发布的策略,每 6 个月一个版本.这是采用新的发布策略之后的第一个版本. Java 10 主要有 12 个新特性. 具体来看看. JEP 286: Local-Variable Type I…
前面已经学习了redis的基本的命令行操作和数据类型,下面开始redis一些有趣的功能. 订阅和发布机制 定义:发布者相当于电台,订阅者相当于客户端,客户端发到频道的消息,将会被推送到所有订阅此频道的客户端:客户端不需要主动去获取消息,只需要订阅频道,这个频道的内容就会被推送过来: 作用:发布者和订阅者的解耦合可以带来更大的扩展性和更加动态的网络拓扑; 相关命令 # 订阅消息 subscribe 频道1 频道2 # 此时redis客户端会一直处于监听频道的状态,一有消息就处理: # 取消订阅 u…
一.持久化 所谓的持久化就是把内存中的数据写到磁盘中去,防止服务宕机后内存数据丢失.Redis4.0之前提供了两种持久化方式:RDB(默认) 和AOF,Redis4.x之后新增了一种混合持久化(本文所用的Redis版本是redis‐5.0.2) 1.RDB RDB是Redis Database缩写,在默认情况下,Redis将内存数据库快照保存在名字为dump.rdb的二进制文件中.可以对Redis进行设置,让它在“ N秒内至少有M个键值改动”这一条件被满足时,自动保存一次数据.比如下图,900秒…
一.介绍       redis学了有一段时间了,以前都是看视频,看教程,很少看官方的东西.现在redis的东西要看的都差不多看完了.网上的东西也不多了.剩下来就看看官网的东西吧,一遍翻译,一遍测试.不错的使用体验,今天开始就写一下redis的客户端的使用,也就是redis-cli工具类,这个文件的内容真不少,一次写完有点吃力.分多次写吧.二.使用详解    1.redis-cli,Redis命令行界面           redis-cli是Redis命令行界面,它是一个允许向Redis发送命…
缓存现在几乎是所有中大型网站都在用的必杀技,合理的利用缓存不仅能够提升网站访问速度,还能大大降低数据库的压力.Redis提供了键过期功能,也提供了灵活的键淘汰策略,所以,现在Redis用在缓存的场合非常多. 之前有两篇博文(centos安装Redis 和 Redis五大数据类型的常用操作),分别介绍了Redis的安装和Redis的常用操作.今天主要介绍介绍springboot整合Redis. v应用场景 现在公司做的项目都偏重论坛/社区/社交类产品,所以对Redis的实用场景主要集中在排行榜,最…
由于redis服务端是单线程实现的,因此只能占用CPU的单核,为了充分利用CPU资源,可以在一台服务器上同时启动多个redis-server实例 首先删除之前的rdb.aof文件 注释掉3个save appendonly改为no 配置方法: 每个实例创建一个conf文件 修改每个conf文件中的端口号 启动不同实例时指定不同的配置文件 复制一份conf,命名为6380.conf 该端口号.保存的文件名为6380 重启 关闭已启动的Redis进程 启动Redis,加载两个配置文件 使用查看进程和r…
转载来源:http://www.cnblogs.com/PatrickLiu/p/8508975.html 一.介绍 redis学了有一段时间了,以前都是看视频,看教程,很少看官方的东西.现在redis的东西要看的都差不多看完了.网上的东西也不多了.剩下来就看看官网的东西吧,一遍翻译,一遍测试.不错的使用体验,今天开始就写一下redis的客户端的使用,也就是redis-cli工具类,这个文件的内容真不少,一次写完有点吃力.分多次写吧. 二.使用详解  1.redis-cli,Redis命令行界面…
SpringBoot + Redis +SpringSession 缓存之实战 前言 前几天,从师兄那儿了解到EhCache是进程内的缓存框架,虽然它已经提供了集群环境下的缓存同步策略,这种同步仍然需要消耗一定时间的,就是从某种程度上讲短暂的缓存不一致依旧存在. 所以,我就选择了集中式缓存,在 SpringBoot 工程中使用 Redis 进行缓存. 个人参考案例 个人博客 : https://zggdczfr.cn/ 个人参考案例(如果认可的话,麻烦给颗star) : https://gith…
转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springboot/2017/07/11/springboot14-redis-mq/ 本文出自方志朋的博客 这篇文章主要讲述如何在springboot中用reids实现消息队列. 准备阶段 安装redis,可参考我的另一篇文章,5分钟带你入门Redis. java 1.8 maven 3.0 idea 环境依赖 创建一个新的springboot工程,在其pom文件,加入spring-boot-starter…
环境准备 准备 6台(51-56) redis服务器  以默认配置运行redis服务即可  一.创建Redis集群 1.启用集群功能( 51-56 都要配置) ]#  netstat -antupl |grep :6379(要有东西) ]# /etc/init.d/redis_6379 stop   *一一对应,以52为例* ]# vim /etc/redis/6379.conf 70 bind 192.168.4.52 93 port 6352 815 cluster-enabled yes…
十二.Redis主从复制 概念 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器.前者称为主节点(Master/Leader),后者称为从节点(Slave/Follower), 数据的复制是单向的!只能由主节点复制到从节点(主节点以写为主.从节点以读为主). 默认情况下,每台Redis服务器都是主节点,一个主节点可以有0个或者多个从节点,但每个从节点只能由一个主节点. 作用 数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余的方式. 故障恢复:当主节点故障时…
1.Units单位 配置大小单位,开头定义了一些基本的度量单位,只支持bytes,不支持bit 对大小写不敏感 2.INCLUDES包含 和我们的Struts2配置文件类似,可以通过includes包含,redis.conf可以作为总闸,包含其他 3.GENERAL通用 daemonize. pidfile.port : 参考文章末尾的通用配置. tcp-backlog: 设置tcp的backlog,backlog其实是一个连接队列,backlog队列总和=未完成三次握手队列 + 已经完成三次握…
Redis事物 Redis命令实现事务 Redis的事物包含在multi和exec(执行)或者discard(回滚)命令中 和sql事务不同的是,Redis调用Exec只是将所有的命令变成一个单元一起执行,期间不会插入其他的命令. 这种方式不保证事务的一致性,即使中间有一条命令出错了,其他命令仍然可以正常执行,并且无法回滚 下面的例子演示了一个基本的事务操作 127.0.0.1:6379> multi OK 127.0.0.1:6379> set name mike QUEUED 127.0.…
一.引言     上一篇文章我们一步一步的教大家搭建了Redis的Cluster集群环境,形成了3个主节点和3个从节点的Cluster的环境.当然,大家可以使用 Cluster info 命令查看Cluster集群的状态,也可以使用Cluster Nodes 命令来详细了解Cluster集群每个节点的详细信息和关系.我们可以在主节点上增加数据.操作数据,也可以在从节点上读取数据,这些操作当然都没有问题.我们今天这篇文章主要是讲解一下如何在不停掉Cluster集群环境的情况下,动态的往集群环境中增…
Redis-Sentinel是官方推荐的高可用解决方案,当redis在做master-slave的高可用方案时,假如master宕机了,redis本身(以及其很多客户端)都没有实现自动进行主备切换,而redis-sentinel本身也是独立运行的进程,可以部署在其他与redis集群可通讯的机器中监控redis集群. v哨兵作用 监控(Monitoring): 哨兵(sentinel) 会不断地检查你的Master和Slave是否运作正常. 提醒(Notification):当被监控的某个Redi…