
Redis学习
文章平均质量分 73
Redis(Remote Dictionary Server), 即远程字典服务, 是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库, 并提供多种语言的API。
自由与束缚JavaJavaScript
这个作者很懒,什么都没留下…
展开
-
001_Redis介绍
一. Redis官方网址1. 英文网址: https://redis.io/2. 中文网址: http://www.redis.cn/二. Redis简介1. Redis(Remote Dictionary Server), 即远程字典服务, 是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库, 并提供多种语言的API。从2010年3月15日起, Redis的开发工作由VMware主持。2. Redis是一个key-value存原创 2021-02-26 21:03:19 · 111 阅读 · 0 评论 -
002_Redis安装和卸载
一. Windows下安装Redis1. 下载地址: https://github.com/tporadowski/redis/releases。2. 把下载好的Redis-x64-5.0.10.zip解压到Redis-x64-5.0.10目录3. 在Redis-x64-5.0.10目录下, 启动Redis服务: redis-server.exe redis.windows.conf4. 这时候另启一个cmd窗口, 原来的不要关闭, 不然就无法访问服务端了。切换到Redis-x6原创 2021-02-26 23:40:12 · 184 阅读 · 0 评论 -
003_Redis配置
1. Redis的配置文件位于Redis安装目录下, 文件名为redis.conf(Windows名为redis.windows.conf)。2. 你可以通过config命令查看或设置配置项。3. 使用*号获取所有配置项: config get *4. redis.conf配置项说明 配置项 说明 daemonize yes Redis默认不是以守护进程的方式运行, 可以通过该配置项修改, 使用yes启用守护进程(Wi原创 2021-02-27 14:39:34 · 110 阅读 · 0 评论 -
004_Redis的String数据类型
1. String类型是包含很多种数据类型的特殊类型, 并且是二进制安全的。比如: 序列化的对象进行存储, 比如: 一张图片进行二进制存储, 比如: 一个简单的字符串, 数值等等。string类型的值最大能存储512MB。2. 设置字符串2.1. 语法: set key value。2.2. set命令用于设置给定key的值。如果key已经存储其他值, set就覆写旧值, 且无视类型。2.3. 如果字符串有空格需要加上引号。如果没有空格也可以不加引号。2.4. set在设置操作成功完成时原创 2021-02-28 21:07:50 · 138 阅读 · 0 评论 -
005_Redis的Hash数据类型
1. Hash类型是String类型的field和value的映射表, 它特别适合存储对象。每个hash可以存储232- 1键值对(40多亿)。2. 为哈希表中的字段赋值2.1. 语法: hset key field value。2.2. hset命令用于为哈希表中的字段赋值。如果哈希表不存在, 一个新的哈希表被创建并进行hset操作。如果字段已经存在于哈希表中, 旧值将被覆盖。2.3.如果字段是哈希表中的一个新建字段, 并且值设置成功, 返回1。如果哈希表中域字段已经存在且旧值已被新值..原创 2021-03-01 10:26:00 · 85 阅读 · 0 评论 -
006_Redis的List数据类型
1. List类型是一个链表结构的集合, 主要功能有push, pop, 获取元素等。List类型是一个双端链表的结构, 我们可以通过相关操作进行集合的头部或者尾部添加删除元素, List的设计非常简单精巧, 既可以做为栈, 又可以作为队列。2. 将一个或多个值插入到列表头部2.1. 语法: lpush key value1 [value2]。2.2. lpush命令将一个或多个值插入到列表头部(栈的功能, 先进后出)。如果key不存在, 一个空列表会被创建并执行lpush操作。当key存在但不原创 2021-03-01 19:42:07 · 181 阅读 · 0 评论 -
007_Redis的Set数据类型
1. Set集合是String类型的无序集合。集合成员是唯一的, 这就意味着集合中不能出现重复的数据, 根据集合内元素的唯一性, 第二次插入的元素将被忽略。Set是通过哈希表实现的, 所以添加、删除、查找的复杂度都是O(1)。集合中最大的成员数为232- 1(4294967295, 每个集合可存储40多亿个成员)。2. 向集合添加一个或多个成员2.1. 语法: sadd key member1 [member2]。2.2. sadd命令将一个或多个成员元素加入到集合中, 已经存在于集合的成员元.原创 2021-03-02 12:31:03 · 159 阅读 · 0 评论 -
008_Redis的ZSet数据类型
1. zset和set一样也是string类型元素的集合, 且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的, 但分数(score)却可以重复。集合是通过哈希表实现的, 所以添加、删除、查找的复杂度都是O(1)。集合中最大的成员数为232- 1 (4294967295, 每个集合可存储40多亿个成员)。2. 向有序集合添加一个或多个成员2.1. 语法: zadd key score1 membe.原创 2021-03-02 17:26:17 · 379 阅读 · 0 评论 -
009_Redis的事物
1. Redis事务可以一次执行多个命令, 并且带有以下三个重要的保证:1.1. 批量操作在发送exec命令前被放入队列缓存。1.2. 收到exec命令后进入事务执行, 事务中任意命令执行失败, 其余的命令依然被执行。1.3. 在事务执行过程, 其他客户端提交的命令请求不会插入到事务执行命令序列中。2. 一个事务从开始到执行会经历以下三个阶段:2.1. 开始事务。2.2. 命令入队。2.3. 执行事务。3. 单个Redis命令的执行是原子性的, 但Redis没有在事务上增加任原创 2021-03-03 23:52:59 · 88 阅读 · 1 评论 -
010_Redis的发布和订阅
1. subscribe命令1.1. 语法: subscribe channel [channel ...]。1.2. subscribe命令用于订阅给定的一个或多个频道的信息。1.3. 在Redis客户端, 运行该命令会阻塞, 用于接收信息。1.4. 实例2. publish命令2.1. 语法: publish channel message。2.2. publish命令用于将信息发送到指定的频道。2.3. 返回接收到信息的订阅者数量。2.4. 实例2.4.1.原创 2021-03-04 16:59:32 · 114 阅读 · 1 评论 -
011_Redis的快照持久化
1. snapshotting(快照)默认持久化方式, 将内存中以快照的方式写入到二进制文件中, 默认是dump.rdb。2. dump.rdb文件的位置2.1.在Redis客户端使用config的get命令, dir是数据库存放目录, dbfilename是数据库文件名。2.2.进入root目录查看dump.rdb3. snapshotting持久化方式设置3.1. 在Redis客户端使用config的get命令, save指定在多长时间内, 有多少次更新操作, 就将数据同..原创 2021-03-05 10:24:46 · 130 阅读 · 1 评论 -
012_Redis的aof持久化方式
1. appendonly file(缩写aof)的持久化方式,使用aof时, Redis会将每次更新操作后进行日志记录, 当Redis重新启动时会重新执行文件中保存的写命令来在内存中重建这个数据库的内容。2. 编辑redis.conf如下: vim /usr/local/redis-6.2.0/redis.conf3. aof配置信息 3.1. appendonly no默认aof持久化方式是关闭的, 启动aof更改为: appendonly yes。3.2. appendfsync.原创 2021-03-05 10:52:13 · 175 阅读 · 1 评论 -
013_Redis的主从模式
1. 主从复制1.1. 一个master可以拥有多个slave。1.2. 多个slave可以连接同一个master外, 还可以连接到其它的slave。1.3. 主从复制不会阻塞master在同步数据时继续处理client请求。1.4. 提供系统的伸缩性。2. 主从复制过程2.1. slave与master建立连接, 发送sync同步命令。2.2. master会开启一个后台进程, 将数据库快照保存到文件中, 同时master主进程会开启收集新的写命令并缓存。2.3. 后台完成原创 2021-03-05 22:04:51 · 141 阅读 · 1 评论 -
014_Redis的哨兵模式
1. 有了主从复制的实现以后, 我们如果想对主从服务器进行监控, 那么在Redis2.6以后提供了一个哨兵机制。顾名思义, 哨兵的含义就是监控Redis系统的运行状况。2. 哨兵机制的主要功能2.1. 监控主节点和从节点是否正常运行。2.2. 主数据库出现故障时, 可以自动将从节点转换为主节点, 实现自动切换。3. 启动哨兵程序(可以启动多个)3.1. 在任意一台从节点服务器上或者一台新的服务器上(安装了Redis)修改/usr/local/redis-6.2.0/sentinel.co原创 2021-03-07 13:55:31 · 116 阅读 · 1 评论 -
015_Redis创建集群
1. 准备6台服务器, 都按照好了Redis和Ruby192.168.25.133:6379192.168.25.135:6379192.168.25.137:6379192.168.25.138:6379192.168.25.139:6379192.168.25.140:63792. 6台服务器上都安装ruby和redis的接口3. 6台服务器上都在redis.conf中开启集群模式4. 6台服务器上都在redis.conf中配置密码5. 分别启动自己6原创 2021-03-08 17:30:43 · 92 阅读 · 0 评论 -
016_Redis集群的删除和添加节点
1. 集群操作命令1.1. 查看集群命令1.2. create创建一个集群。1.3. add-node添加一个节点到集群。1.4. reshard分片。1.5. del-node移除一个节点。2. 创建集群2.1. 分别启动192.168.25.133、192.168.25.135、192.168.25.137、192.168.25.138、192.168.25.139和192.168.25.140这6台机器上的Redis服务。2.2. 创建集群2.3. 查看集群原创 2021-03-08 20:08:13 · 564 阅读 · 0 评论 -
017_Jedis的String数据类型
一. 下载Jedis包1. Jedis包: https://mvnrepository.com/artifact/redis.clients/jedis2. Jedis源码: https://github.com/redis/jedis二. Jedis字符串操作1. 新建一个名为JedisString的Java项目, 拷入相关jar包, 并添加到build path2. Jedis添加和获取一个字符串类型的k-v2.1. 代码2.2. 运行结果3. Jed原创 2021-02-28 21:53:30 · 341 阅读 · 0 评论 -
018_Jedis的Hash数据类型
1. 新建一个名为JedisHash的Java项目, 拷入相关jar包, 并添加到build path2. Jedis设置和获取哈希表字段值2.1. 代码2.2. 运行结果3. Jedis同时设置和获取多个哈希表字段值3.1. 代码3.2. 运行结果4. Jedis获取哈希表中所有字段4.1. 代码4.2. 运行结果5. Jedis获取哈希表中所有值5.1. 代码5.2. 运行结果6. Jedis获取哈希表中字段的数量原创 2021-03-01 12:04:48 · 200 阅读 · 0 评论 -
019_Jedis的List数据类型
1. 新建一个名为JedisList的Java项目, 拷入相关jar包, 并添加到build path2. Jedis将一个或多个值插入到列表头部2.1. 代码2.2. 运行结果3. Jedis将一个或多个值插入到列表尾部3.1. 代码3.2. 运行结果4. Jedis移出并获取列表的头部元素4.1. 代码4.2. 运行结果5. Jedis移除并获取列表的尾部元素5.1. 代码5.2. 运行结果6. Jedis在列表的元原创 2021-03-01 20:18:55 · 458 阅读 · 0 评论 -
020_Jedis的Set数据类型
1. 新建一个名为JedisSet的Java项目, 拷入相关jar包, 并添加到build path1. 新建一个名为JedisSet的Java项目, 拷入相关jar包, 并添加到build path2. Jedis向集合添加一个或多个成员2.1. 代码2.2. 运行效果3. Jedis返回集合中的所有成员3.1. 代码3.2. 运行效果4. Jedis获取集合的成员数4.1. 代码4.2. 运行效果5. Jedis判断成员元素是否是集合的原创 2021-03-02 23:41:09 · 276 阅读 · 0 评论 -
021_Jedis的ZSet数据类型
16. 完整代码16.1. RedisZSet.javapackage com.redis.zset;import java.util.HashMap;import java.util.Map;import redis.clients.jedis.Jedis;/** * zset有序集合 */public class RedisZSet { public static void main(String[] args) { jedisZremrangeByScore(); }原创 2021-03-03 01:09:19 · 558 阅读 · 4 评论 -
022_Jedis的事物
1. 新建一个名为JedisTransaction的Java项目, 拷入相关jar包, 并添加到build path2. 编辑JedisTransaction.javapackage com.redis.transaction;import java.util.List;import redis.clients.jedis.Jedis;import redis.clients.jedis.Transaction;/** * Jedis事物 */public class Jed原创 2021-03-04 00:04:59 · 129 阅读 · 1 评论 -
023_Jedis的发布和订阅
1.Redis为我们提供了publish/subscribe(发布/订阅)功能。我们可以对某个channel(频道)进行subscribe(订阅),当有人在这个channel上publish(发布)消息时, Redis就会通知我们, 这样我们可以收到别人发布的消息。2. 作为Java的Redis客户端, Jedis提供了publish/subscribe的接口。本文讲述如何使用Jedis来实现Redis的publish/subscribe。3. Jedis定义了抽象类JedisPubSub, 在这.原创 2021-03-04 16:53:08 · 444 阅读 · 1 评论 -
024_Jedis连接池
1. Jedis不是线程安全的, 故不应该在多线程环境中共用一个Jedis实例。但是, 也应该避免直接创建多个Jedis实例, 因为这种做法会导致创建过多的socket连接, 性能不高。2. 要保证线程安全且获得较好的性能, 可以使用JedisPool。JedisPool是一个连接池, 既可以保证线程安全, 又可以保证了较高的效率。3. 可以声明一个全局的JedisPool变量来保存JedisPool对象的引用, 然后在其他地方使用。要知道, JedisPool是一个线程安全的连接池。Jedi原创 2021-03-05 22:56:34 · 424 阅读 · 0 评论 -
025_Jedis集群
1. 创建集群节点2. 创建集群操作对象3. 关闭集群4. 例子4.1. 新建一个名为JedisCluster的Java项目, 拷入相关jar包, 并添加到build path4.2. 代码package com.redis.cluster;import java.util.HashSet;import java.util.Map;import java.util.Set;import java.util.TreeSet;import redis.cli原创 2021-03-08 13:42:39 · 241 阅读 · 0 评论