redis入门+下载安装+springdata整合redis
Redis入门
今天我们来学习一下redis,想要学习redis,首先要了解一个东西:NoSQL
1.什么是NoSQL?
NoSQL(NoSQL = Not Only SQL),意即“不仅仅是SQL”,是一项全新的数据库理念,泛指非关系型的数据库。
2.为什么使用NoSQL?
官方文档用了一大堆文字来描述,但在我看来,其实主要就是用来解决以下几个点问题的:
- 高并发读写
- 海量数据的高效率存储和访问
- 高可扩展性和高可用性
3.主流NoSQL产品
NoSQL数据库的四大分类如下:
- 键值(Key-Value)存储数据库
相关产品: Tokyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB
典型应用: 内容缓存,主要用于处理大量数据的高访问负载。
数据模型: 一系列键值对
优势: 快速查询
劣势: 存储的数据缺少结构化 - 列存储数据库
相关产品:Cassandra, HBase, Riak
典型应用:分布式的文件系统
数据模型:以列簇式存储,将同一列数据存在一起
优势:查找速度快,可扩展性强,更容易进行分布式扩展
劣势:功能相对局限 - 文档型数据库
相关产品:CouchDB、MongoDB
典型应用:Web应用(与Key-Value类似,Value是结构化的)
数据模型: 一系列键值对
优势:数据结构要求不严格
劣势: 查询性能不高,而且缺乏统一的查询语法 - 图形(Graph)数据库
相关数据库:Neo4J、InfoGrid、Infinite Graph
典型应用:社交网络
数据模型:图结构
优势:利用图结构相关算法。
劣势:需要对整个图做计算才能得出结果,不容易做分布式的集群方案。
4.什么是Redis?
Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库。
-
官方提供测试数据:50个并发执行100000个请求,读的速度是110000次/s,写的速度是81000次/s (数据仅供参考)。
-
Redis提供5种数据类型,解决不同场景下存储问题。
1、 字符串类型
2、 散列类型
3、 列表类型
4、 集合类型
5、 有序集合类型。
5.redis下载与安装
redis建议安装在linux服务器上运行测试,本次主要学习windows下操作。
- redis官方只提供linux版本
- 链接: https://redis.io/.
- 微软维护redis window版本
- 将zip文件解压即可
5.1 目录结构和使用
- 目录结构
5.2 启动redis服务:运行redis-server.exe,并指定配置文件名称
redis-server.exe redis.windows.conf
- 如果有网络访问问题,允许
- 若出现问题:system error caught
修改redis.windows.conf文件,最后追加如下内容(用于设置内存大小,参考 maxheap = 1.5 * maxmemory):
maxmemory 120MB
maxheap 180MB
5.3 连接redis服务:双击redis-cli.exe接口
- 使用“ping"命令进行测试,如果返回结果为”PONG“,表示连接成功
- 问题:由于目标计算机积极拒绝,无法连接。(redis没有启动,启动就行)
6.注册成windows服务
- 将redis服务注册window服务。
redis-server.exe --service-install
- 可选项:设置redis服务的启动方式
7.安装图形化工具
-
仅使用 redis-cli.exe 工具,操作效率不高,通常我们选择安装一款图形化工具。
-
安装软件:redis-desktop-manager
链接: Redis Desktop Manager官网下载地址http://redisdesktop.com/download.
链接: Redis Desktop Manager在git的免费发行版0.9.3页面 https://github.com/uglide/RedisDesktopManager/releases/tag/0.9.3.
7.1 安装
- 步骤一:环境界面
- 步骤二:许可
- 步骤三:选择安装路径
- 步骤四:安装成功
- 步骤五:完成并运行
7.2 使用
- 连接redis
7.3 redis几个简单的常见命令
- 类似mysql时的sql语句
常见命令 | 描述 |
---|---|
ping | 用于测试redis服务是否连接成功,返回“PONG”表示成功 |
set | 设置字符串数据,格式:set 键 值 |
get | 获得字符串数据,格式:get 键 |
del | 删除数据,格式:del 键 |
8. Jedis使用
Redis不仅是使用命令来操作,现在基本上主流的语言都有客户端支持,比如java、C、C#、C++、php、Node.js、Go等。
- 在官方网站里列一些Java的客户端,有Jedis、Redisson、Jredis、JDBC-Redis等,其中官方推荐使用Jedis和Redisson。下面我们就简单学习下Jedis。
- Jedis同样也是托管在github上,地址:https://github.com/xetorthio/jedis.
8.1 搭建环境
- 步骤一:构建测试项目
- 步骤二:修改pom.xml文件,添加依赖 redis、test
<dependencies>
<!--redis-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.1.4.RELEASE</version>
</dependency>
<!--Jedis-->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.3</version>
</dependency>
<!--test-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>2.1.4.RELEASE</version>
</dependency>
<!--web-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.1.4.RELEASE</version>
</dependency>
</dependencies>
- 步骤三:编写启动类
@SpringBootApplication
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class,args);
}
}
8.2 Jedis入门
public class TestJedis {
public static void main(String[] args) {
//1 构建jedis对象
Jedis jedis = new Jedis("127.0.0.1",6379);
//2 存放数据
jedis.set("name","张三");
//3 获得数据
String name = jedis.get("czxy");
//4 控制台展示
System.out.println(name);
//5 释放资源
jedis.close();
}
}
9. Spring boot 整合 Redis
9.1 StringRedisTemplate 常用方法
- RedisTemplate 对redis中5种类型进行操作工具类。
- 开发中使用字符串较多,StringRedisTemplate 专门进行字符串处理模板类。
常见方法 | 描述 |
---|---|
opsForValue() | 操作字符串 |
delete(key) | 根据key删除记录 |
- 通过opsForValue()获得字符串操作对象,可以进行具体操作
方法 | 描述 |
---|---|
ops.set(key,value) | 向redis中插入数据。因为这个没有设置过期时间所以是永久存储的。 |
ops.set(key,value,time,timeUnit); | 向redis中插入数据。第三个参数是一个long型的时间。最后一个参数是时间的单位 |
ops.get(key) | ops.get(key) |
9.2 整合redis
- 修改application.yml 文件,配置redis
#redis配置
spring:
redis:
database: 0
host: 127.0.0.1
port: 6379
9.3 整合Junit
@RunWith(SpringRunner.class)
@SpringBootTest(classes = TestApplication.class)
public class TestTemplate {
@Test
public void testDemo(){
System.out.println("....");
}
}
9.4 测试
@RunWith(SpringRunner.class) //spring整合Junit
@SpringBootTest(classes=TestApplication.class) //spring boot 整合Junit
public class TestTemplate {
@Resource
private StringRedisTemplate stringRedisTemplate;
/**
*添加数据
*/
@Test
public void demo01(){
stringRedisTemplate.opsForValue().set("java001","niubi");
}
/**
*添加数据,设置有效时间5分钟
*/
@Test
public void demo02(){
stringRedisTemplate.opsForValue().set("java002","牛", 5 ,TimeUnit.MINUTES);
}
/**
*获得数据
*/
@Test
public void demo03(){
String str = stringRedisTemplate.opsForValue().get("java001");
System.out.println(str);
}
/**
*删除数据
*/
@Test
public void demo04(){
stringRedisTemplate.delete("java001");
}
}
10. 附
- Linux系统环境安装使用redis+简单的java连接redis链接: https://blog.csdn.net/weixin_44356108/article/details/107965146.
- redis.conf 配置详情
链接: https://blog.csdn.net/weixin_44356108/article/details/107942907.