参照教程:黑马程序员


redis介绍

(来自黑马程序员笔记)
主要特点:

  • 基于内存存储,读写性能高
  • 适合存储热点数据(热点商品、资讯、新闻)
  • 企业应用广泛

Redis是用C语言开发的一个开源的高性能键值对(key-value)
数据库,官方提供的数据是可以达到100000+的QPS(每秒内查询次数)。它存储的value类型比较丰富,也被称为结构化的NoSql数据库。

NoSql(Not Only SQL),不仅仅是SQL,泛指非关系型数据库。NoSql数据库并不是要取代关系型数据库,而是关系型数据库的补充。

关系型数据库(RDBMS):

  • Mysql
  • Oracle
  • DB2
  • SQLServer

非关系型数据库(NoSql):

  • Redis
  • Mongo db
  • MemCached

redis安装

我使用的是Linux系统安装redis

redis中文网
官网下载压缩包拖入Xshell解压

安装redis环境:

1
yum -y install gcc

对redis进行编译

1
2
3
4
5
6
7
# 进入:cd redis-5.0.4
make
# 编译完成:cd /redis-5.0.4/src
cd src
make install
# 出来redis的文件夹
cd ../

修改配置

  • 改为后台启动
1
vi redis.conf

daemonize no 改成daemonize yes

启动redis

tip:
redis-serverredis-cli:

redis-server和redis-cli有什么区别

腾讯元宝如是说道:
redis-serverredis-cli是Redis数据库管理系统中的两个重要组件,它们各自承担着不同的职责。以下是它们之间的主要区别:

redis-server

角色:

  • redis-server是Redis数据库的服务器程序。
  • 它负责处理客户端的连接请求、执行命令、管理数据存储以及维护Redis的内部状态。

功能:

  • 启动和管理Redis实例。
  • 加载和解析配置文件(如redis.conf),以确定Redis的各种设置(例如监听地址、端口、持久化策略等)。
  • 监听指定的网络端口,等待并接受客户端的连接。
  • 处理来自客户端的命令请求,并返回相应的结果。
  • 实现数据的存储、检索和修改功能。
  • 提供持久化机制,将数据保存到磁盘上,以防止数据丢失。

使用方式:

  • 通常在后台运行,作为服务持续提供Redis服务。
  • 可以通过命令行参数或配置文件来定制Redis的行为。

redis-cli

角色:

  • redis-cli是Redis的命令行客户端工具。
  • 它允许用户与Redis服务器进行交互,发送命令并查看结果。

功能:

  • 提供一个简单的文本界面,让用户能够方便地输入Redis命令。
  • 连接到指定的Redis服务器实例。
  • 发送Redis命令并接收返回的结果。
  • 支持多种交互模式,包括交互式模式和批处理模式。
  • 可以用于执行常见的Redis操作,如设置键值对、获取数据、删除键等。
  • 还提供了一些辅助功能,如查看服务器状态、执行脚本等。

使用方式:

直接在命令行中运行,通过输入命令与Redis服务器通信。
可以指定连接的服务器地址、端口和其他参数。

总结

redis-server是Redis的核心服务组件,负责处理所有的数据操作和管理任务。
redis-cli则是用户与Redis服务器之间的桥梁,提供了一个便捷的方式来执行命令和管理Redis实例。

简而言之,如果你想要启动和管理Redis服务,你需要使用redis-server;而如果你想要与Redis进行交互并执行命令,你需要使用redis-cli。

通过使用配置路径的方式启动redis

1
2
redis-server /usr/local/redis-5.0.4/redis.conf
# 或者使用相对路径也是可以的,能通到redis.conf就可以
redis-server和redis-server ./redis.conf有什么区别

redis-serverredis-server ./redis.conf 的主要区别在于它们的启动方式和配置来源

  • redis-server:当你直接运行 redis-server 命令时,Redis 会使用默认的配置文件(通常位于 /etc/redis/redis.conf
    )或者在其安装目录下的 redis.conf 文件。这种方式启动的 Redis 实例将使用默认配置进行初始化。

  • redis-server ./redis.conf:当你运行 redis-server ./redis.conf 命令时,Redis 会使用当前目录下的 redis.conf
    文件作为配置文件。这种方式启动的 Redis 实例将使用指定的配置文件进行初始化,覆盖默认配置。

总结一下,redis-server 使用默认配置文件启动 Redis 实例,而 redis-server ./redis.conf 使用指定的配置文件启动 Redis
实例。在实际应用中,你可以根据需要选择使用默认配置还是自定义配置来启动 Redis。

设置密码

参考文章:
Linux下安装Redis,及部分配置详情
密码验证的地方根据上述文章,我进行了一些修改: 因为我的系统提醒我:

Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.

所以删去了 redis-cli -h 127.0.0.1 -p 6379 -a ****这一步

1
2
3
4
5
6
7
a. 运行命令:redis-cli

b. 查看现有的redis密码命令:config get requirepass

c. 设置redis密码命令:config set requirepass **** //(****为你要设置的密码),设置成功的话会返回‘OK’字样

e. 输入 redis-cli 进入命令模式,使用 auth ***** //(****为你设置的密码)登陆

在Java中操作Redis——Spring Data Redis使用方式

介绍

(来自黑马程序员笔记)
Spring Data Redis 是 Spring 的一部分,提供了在 Spring 应用中通过简单的配置就可以访问 Redis 服务,对 Redis 底层开发包进行了高度封装。在
Spring 项目中,可以使用Spring Data Redis来简化 Redis 操作。

网址:https://spring.io/projects/spring-data-redis

Spring Boot提供了对应的Starter,maven坐标:

1
2
3
4
5

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

Spring Data Redis中提供了一个高度封装的类:RedisTemplate,对相关api进行了归类封装,将同一类型操作封装为operation接口,具体分类如下:

  • ValueOperations:string数据操作
  • SetOperations:set类型数据操作
  • ZSetOperations:zset类型数据操作
  • HashOperations:hash类型的数据操作
  • ListOperations:list类型的数据操作

编写配置类,创建RedisTemplate对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package com.sky.config;

import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;

@Configuration
@Slf4j
public class RedisConfiguration {

@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {
log.info("开始创建redis模板对象...");
RedisTemplate redisTemplate = new RedisTemplate();
//设置redis的连接工厂对象
redisTemplate.setConnectionFactory(redisConnectionFactory);
//设置redis key的序列化器
redisTemplate.setKeySerializer(new StringRedisSerializer());
return redisTemplate;
}
}

解释说明:

当前配置类不是必须的,因为 Spring Boot 框架会自动装配 RedisTemplate 对象,但是默认的key序列化器为

JdkSerializationRedisSerializer,导致我们存到Redis中后的数据和原始数据有差别,故设置为

StringRedisSerializer序列化器。

从redisTemplate里面获取各种数据类型的操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Test
public void testRedisTemplate(){
System.out.println(redisTemplate);
//string数据操作
ValueOperations valueOperations = redisTemplate.opsForValue();
//hash类型的数据操作
HashOperations hashOperations = redisTemplate.opsForHash();
//list类型的数据操作
ListOperations listOperations = redisTemplate.opsForList();
//set类型数据操作
SetOperations setOperations = redisTemplate.opsForSet();
//zset类型数据操作
ZSetOperations zSetOperations = redisTemplate.opsForZSet();
}