目录
Redis 入门指南
Redis 基本概念
Redis 常用命令
字符串String操作命令:
哈希Hash操作命令:
列表list操作命令
集合set操作命令:
有序集合sorted set 操作命令
通用命令
在Java中操作 Redis
1.Jedis
2.Spring Data Redis
总结
其中键值型,是指Redis中存储的数据都是以key、value对的形式存储,而value的形式多种多样,可以是字符串、数值、甚至json:
Redis(Remote Dictionary Server)是一个开源的内存数据存储系统,也被称为数据结构服务器。它提供了一个键值存储数据库,并支持多种数据结构,例如字符串、哈希、列表、集合和有序集合等。本文将介绍Redis的基本概念、常用命令以及如何在Java中操作Redis。
Redis是一个开源的内存中的数据结构存储系统,它可以用作:数据库、缓存和消息中间件
官网:https://redis.io
下载地址
Windows版下载地址:https://github.com/microsoftarchive/redis/releases
Linux版下载地址:https://download.redis.io/releases/
[root@localhost local]# tar -zxvf redis-4.0.0.tar.gz
键值对
Redis是以键值对的形式存储数据的。每个键都是唯一的,并且可以关联多种不同类型的值。键和值都可以是字符串,但值也可以是其他数据结构,如哈希、列表、集合和有序集合。
数据结构
Redis支持多种数据结构,包括:
持久化
Redis可以将数据持久化到磁盘,以便在重启后恢复数据。它提供了两种持久化方式:快照(snapshotting)和日志(append-only file)。
以下是Redis的一些常用命令:
SET key value
:设置键值对。GET key
:获取键对应的值。SETEX key [seconds] value: 设置指定key的值,并将key的过期时间设为senconds秒
SETNX key value:只有在key不存在时设置key的值
DEL key
:删除键值对。HSET key field value
:在哈希表key中设置字段field的值设为value。HGET key field
:获取存储在哈希表中指定字段的值。HDEL key field :删除存储在哈希表中的指定字段
HKEYS key :获取哈希表中所有字段(field区)
HVALS key :获取哈希表中所有值(value区)
HGETALL key :获取在哈希表中指定key的所有字段和值
集合成员是不唯一的,可重复
LPUSH key value
:将值插入列表的左侧。RPUSH key value
:将值插入列表的右侧。LPOP key
:从列表的左侧弹出值。RPOP key
:从列表的右侧弹出值。LLEN key : 获取列表长度
BRPOP key1 [key2] timeout : 移出并获取列表的最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
lrange mylist 0 -1,其中,lrange
是 Redis 的命令之一,用于获取指定 List 中指定范围的元素。mylist
是 List 的名称,0
表示起始索引,-1
表示结束索引。在 Redis 中,List 的索引从 0 开始,正数表示从左到右的索引,负数表示从右到左的索引。所以lrange mylist 0 -1
表示获取 List mylist
中从第一个元素到最后一个元素的范围。
集合成员是唯一的,无序的
SADD key member
:向集合中添加成员。SMEMBERS key
:获取集合中的所有成员。SCARD key : 获取集合的成员数
SINTER key1 [key2] :返回给定所有集合的交集
SUNION key1 [key2] : 返回给定所有集合的并集
SDIFF key1 [key2] :返回给定所有集合的差集 key1-key2
SREM key member1 [member2] : 移除集合中的一个或多个成员
在Java中操作Redis,有以下三种常用的库:Jedis、Lettuce和Redisson。
导入maven依赖
redis.clients
jedis
3.6.0
要在Java中操作Redis,我们可以使用Jedis客户端库。以下是一个简单的Java代码示例,展示了如何连接到Redis服务器并执行一些基本操作:
import redis.clients.jedis.Jedis;
public class JedisExample {
public static void main(String[] args) {
//1. 创建Jedis实例,指定Redis服务器的主机和端口
Jedis jedis = new Jedis("localhost", 6379);
// 连接Redis服务器
jedis.connect();
// 执行操作...
jedis.set("username","ziyoujian");
String value = jedis.get("username");
System.out.println(value);
// 关闭连接
jedis.close();
}
}
执行操作:通过Jedis实例,可以执行各种Redis的操作,如字符串操作、列表操作、集合操作、哈希操作和有序集合操作。
以下是一些基本操作的示例:
// 存储字符串
jedis.set("key", "value");
// 获取字符串
String value = jedis.get("key");
// 添加元素到列表的开头
jedis.lpush("list", "value1", "value2");
// 获取列表范围内的元素
List values = jedis.lrange("list", 0, -1);
// 添加元素到集合
jedis.sadd("set", "value1", "value2");
// 获取集合中的所有元素
Set values = jedis.smembers("set");
// 存储哈希的字段和值
jedis.hset("hash", "field1", "value1");
// 获取哈希字段的值
String value = jedis.hget("hash", "field1");
// 添加带有分数的元素到有序集合
jedis.zadd("sortedSet", 1.0, "value1");
jedis.zadd("sortedSet", 2.0, "value2");
// 获取有序集合范围内的元素
Set values = jedis.zrange("sortedSet", 0, -1);
需要根据具体的业务需求选择合适的操作。 以上是使用Jedis操作Redis的入门步骤和示例。你可以根据自己的需求和具体情况进行进一步学习和实践。
1.导入Spring Data Redis库:首先,需要在你的Java项目中导入Spring Data Redis库。你可以使用构建工具如Maven或Gradle,在项目的pom.xml
文件中添加以下依赖:
org.springframework.boot
spring-boot-starter-data-redis
2. 配置Redis连接信息:在Spring Boot项目中,你可以在application.properties
或application.yml
文件中配置Redis的连接信息。示例配置如下
spring.redis.host=localhost
spring.redis.port=6379
下面是一个在单元测试中使用Spring Data Redis的示例:当你在使用RedisTemplate时,可以通过指定泛型来避免显式设置序列化器。默认情况下,Spring Data Redis会根据指定的泛型自动选择合适的序列化器。
@SpringBootTest
public class RedisExampleTest {
@Autowired
private RedisTemplate redisTemplate;
@Test
public void testRedisOperations() {
// 存储字符串
redisTemplate.opsForValue().set("key", "value");
// 获取字符串
String value = redisTemplate.opsForValue().get("key");
assertEquals("value", value);
}
}
在这个示例中,我们使用了@SpringBootTest
注解来启动Spring Boot应用程序的上下文。通过@Autowired
注解,我们将RedisTemplate注入到测试类中。 在testRedisOperations()
方法中,我们进行了两个操作:
opsForValue().set()
方法将键值对存储到Redis中。opsForValue().get()
方法从Redis中获取存储的值,并使用assertEquals()
方法进行断言验证。 你可以根据需要在单元测试中执行其他Redis操作,如列表、集合、哈希和有序集合的操作,以及其他自定义操作。 请确保在单元测试之前已经正确配置了Redis连接信息,如在application.properties
或application.yml
配置文件中添加了合适的Redis连接配置。 这个示例可以帮助你了解如何在单元测试中使用Spring Data Redis进行操作,并验证结果是否符合预期。你可以根据需要扩展和修改这个示例来适应你的具体需求。以下是一些基本操作的示例:
// 存储字符串
redisTemplate.opsForValue().set("key", "value");
// 获取字符串
String value = redisTemplate.opsForValue().get("key");
// 添加元素到列表的尾部
redisTemplate.opsForList().rightPush("list", "value1");
redisTemplate.opsForList().rightPush("list", "value2");
// 获取列表范围内的元素
List values = redisTemplate.opsForList().range("list", 0, -1);
// 添加元素到集合
redisTemplate.opsForSet().add("set", "value1", "value2");
// 获取集合中的所有元素
Set values = redisTemplate.opsForSet().members("set");
// 存储哈希的字段和值
redisTemplate.opsForHash().put("hash", "field1", "value1");
// 获取哈希字段的值
String value = (String) redisTemplate.opsForHash().get("hash", "field1");
// 添加带有分数的元素到有序集合
redisTemplate.opsForZSet().add("sortedSet", "value1", 1.0);
redisTemplate.opsForZSet().add("sortedSet", "value2", 2.0);
// 获取有序集合范围内的元素
Set values = redisTemplate.opsForZSet().range("sortedSet", 0, -1);
我们可以使用Java来执行各种Redis操作,包括设置和获取键值对、操作哈希、列表、集合和有序集合等。 这就是关于Redis的入门指南,介绍了基本概念、常用命令以及在Java中操作Redis的示例。希望对你理解和使用Redis有所帮助!