目录
[1. 字符串操作命令](#1. 字符串操作命令)
[2. 哈希操作命令](#2. 哈希操作命令)
[3. 列表操作命令](#3. 列表操作命令)
[4. 集合操作命令](#4. 集合操作命令)
[5. 有序集合操作命令](#5. 有序集合操作命令)
前言

Redis是一个基于内存的key-value结构数据库,有以下的优点:
- 基于内存存储,读写性能高
- 适合存储热点数据(热点商品、资讯、新闻)
- 企业应用广泛
Redis安装包分为Windows版和Linux版:
- Windows版下载地址:https://github.com/microsoftarchive/redis/releases
- Linux版下载地址:https://download.redis.io/releases/
一、Redis入门
Redis的Windows版属于绿色软件,直接解压就可以使用,解压后目录结构如下图,红字是三个重要的文件:

如何启动Redis服务呢?

输入redis-server.exe redis.windows.conf,即可打开Redis服务,默认是6379端口。

然后通过客户端连接Redis服务器,还是在当前文件夹通过cmd打开一个新的命令行窗口,输入redis-cli.exe。

还可以通过以下命令还指定不同ip的Redis服务器。-h后跟的是ip地址, -p后面跟的是端口号。-a后面跟的是redis数据库的密码。我们可以在配置文件中修改Redis数据库的密码。

二、Redis常用数据类型

哈希这种数据结构常常用来存储对象数据。

三、Redis常用命令
我们需要借助一块Redis的图形化工具Another Redis Desktop Manager。

1. 字符串操作命令

在我们的图形化界面中可以看到相应的命令提示

命令执行完之后,我们可以发现设置好了一条字符串数据。

2. 哈希操作命令

3. 列表操作命令
直接利用第一个命令就可以创建列表。

4. 集合操作命令

5. 有序集合操作命令

ZINCRBY key increment member 这个命令可以对指定成员加上分数increment。
若要查询有序集合中的所有成员: ZRANGE key 0 -1。
6.通用命令

KEYS * 返回所有的key
KEYS set* 返回所有以set开头的的key
四、在Java中操作Redis
使用Spring Data Redis来进行Redis操作。

导入Maven坐标:
XML
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
配置Redis数据源:
java
spring:
redis:
host: localhost
port: 6379
password: 123456
database: 0
编写配置类:
java
@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;
}
}
通过RedisTemplate对象操作Redis(通过单元测试来演示):
java
@SpringBootTest
public class SpringDataRedisTest {
@Autowired
private RedisTemplate redisTemplate;
@Test
public void testRedisTemplate() {
System.out.println(redisTemplate);
// 获取Redis中的字符串类型
ValueOperations valueOperations = redisTemplate.opsForValue();
// 获取Redis中的哈希类型
HashOperations hashOperations = redisTemplate.opsForHash();
// 获取Redis中的列表类型
ListOperations listOperations = redisTemplate.opsForList();
// 获取Redis中的集合类型
SetOperations setOperations = redisTemplate.opsForSet();
// 获取Redis中的有序集合类型
ZSetOperations zSetOperations = redisTemplate.opsForZSet();
}
/**
* 操作字符串类型的数据
*/
@Test
public void testString() {
// 设置字符串类型的数据
redisTemplate.opsForValue().set("city", "北京");
// 获取city的值
String city = (String) redisTemplate.opsForValue().get("city");
System.out.println(city);
// 可以设置数据的有效期
redisTemplate.opsForValue().set("code", "1234", 60, TimeUnit.SECONDS);
}
}

java
/**
* 操作哈希类型的数据
*/
@Test
public void testHash() {
HashOperations hashOperations = redisTemplate.opsForHash();
// 向数据库中传入哈希类型的数据
hashOperations.put("101", "name", "menghao");
hashOperations.put("101", "age", "16");
// 获取数据
String name = (String) hashOperations.get("101", "name");
System.out.println(name);
System.out.println("---------------------------------------------------");
// 获取所有的key
Set keys = hashOperations.keys("101");
System.out.println(keys);
System.out.println("---------------------------------------------------");
// 获取所有的values
List values = hashOperations.values("101");
System.out.println(values);
// 删除数据(删除101中的age字段)
hashOperations.delete("101", "age");
}
}

操作其他类型的数据与操作字符串和哈希表都差不多。只需清楚每个方法是做什么的即可。