目录
一、Redis的简介
1.1 Redis是什么?
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
1.2 Redis的安装和下载
安装地址:https://github.com/microsoftarchive/redis/tags
redis的目录结构:
服务器端启动:
客户端启动:
1.3 Redis的基础命令
命令行模式工具使用:
1. 功能性命令:信息添加、信息查询
2. 帮助信息查询
注意:help [空格][TAB]
3. 退出命令: quit、exit、Esc键
4. 清屏命令:clear
二、redis的数据类型
Redis的作用:
作为缓存使用:
1. 原始业务功能设计
秒杀
618活动
双11活动
排队购票
2. 运营平台监控到的突发高频访问数据
突发时政要闻
3. 高频、复杂的统计数据
在线人数
系统功能优化或升级:
1. 单服务器升级集群
2. session
3. token
Redis的存储格式:key:value
2.1 String类型
总结:
redis所有操作都是原子性,采用单线程处理任务业务。
tip1: redis用于控制数据表主键id,为数据库表主键提供生成策略保障数据库表的主键唯一性。支持数据库集群。
tip2: redis控制数据的生命周期,通过数据是否失效控制业务行为。具有时效限定控制。
tip3: redis应用于各种结构型和非结构型高热度数据访问。
key的设置约定:
2.2 Hash类型
购物车模型:
redis存储模型:
商品编号作为field,购买数量作为value
添加、浏览、更改数量、删除、清空
tip4: 应用于购物车数据存储设计。
双11抢购活动模型:
tip5: redis应用于抢购,限购类、限量发放、限量发放优惠券、激活码等业务的数据存储设计。
2.3 list类型
一个存储空间保存多个数据,且通过数据可以体现进入顺序。
业务场景:按照点赞需求显示好友信息。取消点赞,移除对应好友信息。
tip6:redis应用于具有操作先后顺序的数据控制。
业务场景:新闻资讯类网站如何将最新的新闻暗战时间顺序进行展示?
tip7: redis应用于最新消息展示。
2.4 set类型
需求:存储大量的数据,在查询方面提供更高效率。
与hash存储结构相同,仅存储键,不存储值,并且值是不允许重复的。
业务场景:对信息类别逐渐产生兴趣,增加客户留存度。
tip8: redis应用于随机推荐类信息检索。
tip9: redis应用于同类信息的关键搜索,一度关联搜索,深度关联搜索。
案例:依赖set集合hash存储结构特征完成数据过滤和快速查询。
根据用户id获取用户所有角色。
根据用户所有角色获取所有用户操作权限放入set集合。
根据用户所有角色获取用户所有数据全选放入set集合
tip10: redis应用于同类型不重复数据合并操作。
业务场景:统计网站的访问量
tip11: redis应用于同类型数据的快速去重。
tip12: redis应用于基于黑名单和白名单设定的服务控制。
2.5 sorted_set类型
需求:数据排序有利于数据的有效展示,需要提供一种可以根据自身特征进行排序的方式。
案例:为所有参与排名的资源建立排序规则。
tip13: redis应用于计数器组合排序功能对应的排名。
tip14: redis应用于定时任务执行顺序管理或任务过期管理。
任务/消息权重:
tip15: 应用于即时任务/消息队列执行管理。
2.6 数据类型的案例
业务场景:人工智能的语义识别
tip16: redis应用于限时按次结算的服务控制。
业务场景:微信接收顺序的展示:
tip17: redis应用于基于时间顺序的数据操作,而不关注具体时间。
详情学习参照redis的官网。
3 redis的通用命令
3.1 key通用指令
3.2 数据库通用指令
4 Jedis简介
4.1 什么是Jedis?
jedis是java来访问redis数据库的api。
4.2 Jedis快速入门
引入pom依赖:
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
JedisTest
@Test
public void jedisTest(){
//1. 连接redis
Jedis jedis = new Jedis("127.0.0.1", 6379);
//2. 操作redis
jedis.set("name", "hello, beauty");
String name = jedis.get("name");
System.out.println("=======name========>"+name);
//3. 释放资源
jedis.close();
}
测试运行:
4.3 Jedis读写redis数据
@Test
public void listTest(){
//1. 连接redis
Jedis jedis = new Jedis("127.0.0.1", 6379);
//2. 操作redis
jedis.lpush("name", "zs", "ls");
List<String> list = jedis.lrange("name", 0, -1);
System.out.println(list);
System.out.println(jedis.llen("name"));
//3. 释放资源
jedis.close();
}
@Test
public void hashTest(){
//1. 连接redis
Jedis jedis = new Jedis("127.0.0.1", 6379);
//2. 操作redis
jedis.hset("user", "name", "mr");
jedis.hset("user", "age", "18");
jedis.hset("user", "sex", "1");
Map<String, String> user = jedis.hgetAll("user");
System.out.println("=====user======>"+user);
//3. 释放资源
jedis.close();
}
4.4 Jedis可视化工具
jedis的工具类:
JedisUtils
public class JedisUtils {
private static JedisPool jp =null;
private static String host;
private static int port;
private static int maxTotal;
private static int maxIdle;
static {
ResourceBundle rb = ResourceBundle.getBundle("redis");
host = rb.getString("redis.host");
port = Integer.parseInt(rb.getString("redis.port"));
maxTotal = Integer.parseInt(rb.getString("redis.maxTotal"));
maxIdle = Integer.parseInt(rb.getString("redis.maxIdle"));
JedisPoolConfig jpc = new JedisPoolConfig();
jpc.setMaxTotal(maxTotal);
jpc.setMaxIdle(maxIdle);
jp = new JedisPool(jpc, host, port);
}
public static Jedis getJedis(){
return jp.getResource();
}
public static void main(String[] args) {
JedisUtils.getJedis();
System.out.println("=======jedis的工具类==========");
}
}
redis.properties:
redis.host=127.0.0.1
redis.port=6379
redis.maxTotal=30
redis.maxIdle=10
二、基于Linux环境的redis
5. 安装redis
下载安装包:
解压:
进入redis安装目录:
编译安装redis:
启动redis服务器:
进入客户端:
补充:
安装
gcc
编译器步骤:
更新软件列表:
安装
gcc
命令:
安装好并验证:
指定端口启动服务:
指定配置文件启动服务:
redis.conf:
配置文件启动目录管理:
如果你认真阅读到这里相信你对Redis入门有了一定的收获。以上这篇博客是对自己的学习过程的记录,坚持一件事不容易,我们的目标和人民日报站在一起!如果你在看,请坚持点个“在看”,点个“赞”,你个在看你会变好看。后续我给出实际项目结合redis的进阶内容。
如果有小伙伴怕麻烦在这里准备Redis的压缩包,有需要的自取:
链接:https://pan.baidu.com/s/19XIovFM9GNtIlFWdFR-TFg?pwd=2qem
提取码:2qem
redis可视化工具,需要的自取:
链接:https://pan.baidu.com/s/1sFjJBG3t1N2-UawD6WOgAg?pwd=6c8e
提取码:6c8e