Redis 入门指南

Redis 入门指南

目录

Redis 入门指南

Redis 基本概念

Redis 常用命令

字符串String操作命令:

哈希Hash操作命令:

 列表list操作命令

 集合set操作命令:

有序集合sorted set 操作命令

通用命令

在Java中操作 Redis

1.Jedis

2.Spring Data Redis

总结


Redis 入门指南_第1张图片

 其中键值型,是指Redis中存储的数据都是以key、value对的形式存储,而value的形式多种多样,可以是字符串、数值、甚至json:

Redis(Remote Dictionary Server)是一个开源的内存数据存储系统,也被称为数据结构服务器。它提供了一个键值存储数据库,并支持多种数据结构,例如字符串、哈希、列表、集合和有序集合等。本文将介绍Redis的基本概念、常用命令以及如何在Java中操作Redis。

Redis是一个开源的内存中的数据结构存储系统,它可以用作:数据库、缓存和消息中间件Redis 入门指南_第2张图片

官网:https://redis.io

下载地址

Windows版下载地址:https://github.com/microsoftarchive/redis/releases

Linux版下载地址:https://download.redis.io/releases/

Redis 入门指南_第3张图片

 [root@localhost local]# tar -zxvf redis-4.0.0.tar.gz 

Redis 基本概念

键值对

Redis是以键值对的形式存储数据的。每个键都是唯一的,并且可以关联多种不同类型的值。键和值都可以是字符串,但值也可以是其他数据结构,如哈希、列表、集合和有序集合。

数据结构

Redis支持多种数据结构,包括:

  • 字符串(string):存储字符串值。
  • 哈希(hash):存储键值对的散列。
  • 列表(list):按插入顺序存储的字符串元素列表。
  • 集合(set):无序、独立且不重复的字符串元素的集合。
  • 有序集合(sorted set):与集合类似,但每个元素都关联一个分数,使其可以按分数进行排序。

持久化

Redis可以将数据持久化到磁盘,以便在重启后恢复数据。它提供了两种持久化方式:快照(snapshotting)和日志(append-only file)。

Redis 常用命令

以下是Redis的一些常用命令:

字符串String操作命令:

  • SET key value:设置键值对。
  • GET key:获取键对应的值。
  • SETEX key [seconds] value: 设置指定key的值,并将key的过期时间设为senconds秒
  • SETNX key value:只有在key不存在时设置key的值
  • DEL key:删除键值对。

哈希Hash操作命令:

                Redis 入门指南_第4张图片

  • HSET key field value:在哈希表key中设置字段field的值设为value。
  • HGET key field :获取存储在哈希表中指定字段的值。
  • HDEL key field :删除存储在哈希表中的指定字段

  • HKEYS key :获取哈希表中所有字段(field区)

  • HVALS key :获取哈希表中所有值(value区)

  • HGETALL key :获取在哈希表中指定key的所有字段和值

Redis 入门指南_第5张图片

 列表list操作命令

集合成员是不唯一的,可重复

              Redis 入门指南_第6张图片

  • LPUSH key value:将值插入列表的左侧。
  • RPUSH key value:将值插入列表的右侧。
  • LPOP key:从列表的左侧弹出值。
  • RPOP key :从列表的右侧弹出值。
  • LLEN key : 获取列表长度
  • BRPOP key1 [key2] timeout : 移出并获取列表的最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止

                  Redis 入门指南_第7张图片

lrange mylist 0 -1,其中,lrange 是 Redis 的命令之一,用于获取指定 List 中指定范围的元素。mylist 是 List 的名称,0 表示起始索引,-1 表示结束索引。在 Redis 中,List 的索引从 0 开始,正数表示从左到右的索引,负数表示从右到左的索引。所以lrange mylist 0 -1 表示获取 List mylist 中从第一个元素到最后一个元素的范围。

 集合set操作命令:

集合成员是唯一的,无序的 

         Redis 入门指南_第8张图片

  • SADD key member:向集合中添加成员。
  • SMEMBERS key :获取集合中的所有成员。
  • SCARD key : 获取集合的成员数
  • SINTER key1 [key2] :返回给定所有集合的交集
  • SUNION key1 [key2] : 返回给定所有集合的并集
  • SDIFF key1 [key2]  :返回给定所有集合的差集  key1-key2
  • SREM key member1 [member2] : 移除集合中的一个或多个成员

有序集合sorted set 操作命令

Redis 入门指南_第9张图片

  • 更多命令可以参考Redis中文网:https://www.redis.net.cn

通用命令

  • KEYS pattern: 查找所有符合给定模式(pattern)的key
  • EXISTS key : 检查给定key是否存在
  • TYPE key : 返回key所存储的值的类型
  • TTL key : 返回给定key的剩余生存时间(TTL,time to live) ,以秒为单位
  • DEL key : 该命令用于在key存在是删除key

在Java中操作 Redis

在Java中操作Redis,有以下三种常用的库:Jedis、Lettuce和Redisson。

1.Jedis

导入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的入门步骤和示例。你可以根据自己的需求和具体情况进行进一步学习和实践。

2.Spring Data 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.propertiesapplication.yml文件中配置Redis的连接信息。示例配置如下

spring.redis.host=localhost 
spring.redis.port=6379

Redis 入门指南_第10张图片

 下面是一个在单元测试中使用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.propertiesapplication.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有所帮助!

你可能感兴趣的:(redis,数据库,缓存)