37.Redis 内存性数据库

发布时间 2024-01-04 11:59:34作者: 想要暴富的小男孩
1. Redis 简介:完全开源免费的高性能的 key-value 数据库。
• 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进
行使用;
• 不仅仅支持简单的 key-value 类型的数据,同时还提供 list , set , zset , hash 等
数据结构的存储;
• 支持数据的备份,即 master-slave 模式的数据备份;
• 性能极高 ,Redis 能读的速度是 110000 次 /s, 写的速度是 81000 次 /s ;
• Redis 的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操
作是原子性的。多个操作也支持事务,即原子性,通过 MULTI 和 EXEC 指令包起来;
• 支持 publish/subscribe, 通知 ,key 过期等等特性。
2. 进入下载页
https://github.com/microsoftarchive/redis/releases,
3. 将下载好的文件解压,将文件夹重新命名为 Redis ,此文件
只需解压无需安装
4. 打开一个 cmd 窗口 使用 cd 命令切换目录到
F:\soft\worksoft\Redis
5. 运行 redis-server.exe redis.windows.conf
6. 运行 redis-server.exe redis.windows.conf ,报错
7. 解决方案: win+R 然后输入 services.msc ,调出 Windows 服务,然后
找到 Redis ,右键手动停止就好
8. 基本数据结构
• String: 是二进制安全的 , 意思是 redis 的 string 可以包含任何数据。比如 jpg 图片
或者序列化的对象;最大能存储 512MB 。
• Hash: 一个 string 类型的 key 和 value 的映射表, hash 特别适合用于存储对象;
存储 232 -1 键值对( 40 多亿)。
• List: 按照插入顺序排序,你可以添加一个元素到列表的头部(左边)或者尾部(右
边)。可存储 232 - 1 元素 ( 每个列表可存储 40 多亿 )
• Set: 无序集合,通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1) 。
• Sorted Set: 有序集合每个元素都会关联一个 double 类型的分数, redis 正是通过
分数来为集合中的成员进行从小到大的排序; zset 的成员是唯一的 , 但分数 (score)
却可以重复。
9. 各个数据类型应用场景
10. 基本使用
• String: SET key member/GET key
• Hash: HMSET key field1 "Hello" field2 "World"/HGET/HGETALL key
field1
• List: lpush key member/lrange key 0 10
• Set: sadd key member/smembers key
• Sorted Set: zadd key score member/ZRANGEBYSCORE key 0 1000
10. 另启一个 cmd 窗口,原来的不要关闭,不然就无法访问服务端 ,
切换到 redis 目录下运行 :redis-cli.exe -h 127.0.0.1 -p 6379
11. Java 使用 Redis- 引入依赖
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.1.0</version>
</dependency>
12. Java 使用 Redis- 创建 Jedis 实例
// 连接本地的 Redis 服务
Jedis jedis = new Jedis("localhost");
jedis.auth("hogwarts");// 此处为你设置的密码
System.out.println(" 连接成功 ");
// 查看服务是否运行
System.out.println(" 服务正在运行 : "+jedis.ping());
13.Java 使用 Redis- 常用方法
• set(key, value) :给数据库中名称为 key 的 string 赋予值 value
• get(key) :返回数据库中名称为 key 的 string 的 value
• lpush(key, value) :在名称为 key 的 list 头添加一个值为 value 的元素
• lrange(key, start, end) :返回名称为 key 的 list 中 start 至 end 之间的
元素(下标从 0 开始,下同)
• keys(pattern) :返回满足给定 pattern 的所有 key