苍穹外卖学习笔记(九)

由于前面已经有系统学习Redis的文章,这里不再详细书写Redis的入门知识(数据结构、常用命令)

一. Java中操作Redis

Redis的Java客户端

常见的几种:

  1. Jedis
  2. Lettuce
  3. Spring Data Redis(建议)

Spring Data Redis使用方式

操作步骤:

  1. 导入Spring data Redis的Maven坐标
    pom.xml
xml 复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
  1. 配置Redis数据源
    application.yml
yml 复制代码
spring:
    redis:
        host: localhost
        port: 6379
  1. 编写配置类,创建RedisTemplate对象
    RedisConfiguration.java
java 复制代码
@Configuration
@Slf4j
public class RedisConfiguration {

    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        log.info("开始创建Redis模板对象.....");
        //设置Redis工厂对象
        RedisTemplate redisTemplate = new RedisTemplate();
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        //设置key的序列化器
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        //设置value的序列化器
        redisTemplate.setValueSerializer(new StringRedisSerializer());
        return redisTemplate;
    }
}
  1. 通过RedisTemplate操作Redis
    SpringDataRedisTest.java
java 复制代码
@SpringBootTest
public class SpringDataRedisTest {

    @Autowired
    private RedisTemplate redisTemplate;

    @Test
    public void testRedisTemplate() {
        redisTemplate.opsForValue().set("name", "sky");
        System.out.println(redisTemplate.opsForValue().get("name"));
    }
}

完整测试代码:

java 复制代码
@SpringBootTest
public class SpringDataRedisTest {

    @Autowired
    private RedisTemplate redisTemplate;

    @Test
    public void testRedisTemplate() {
        ValueOperations valueOperations = redisTemplate.opsForValue();
        HashOperations hashOperations = redisTemplate.opsForHash();
        ListOperations listOperations = redisTemplate.opsForList();
        SetOperations setOperations = redisTemplate.opsForSet();
        ZSetOperations zSetOperations = redisTemplate.opsForZSet();
    }

    /**
     * 测试字符串
     */
    @Test
    public void testString() {
        //set get setex setnx
        redisTemplate.opsForValue().set("city", "beijing");
        String city = (String) redisTemplate.opsForValue().get("city");
        System.out.println(city);
        redisTemplate.opsForValue().set("code", "1234", 3, TimeUnit.MINUTES);
        redisTemplate.opsForValue().setIfAbsent("lock", "1");
        redisTemplate.opsForValue().setIfAbsent("lock", "2");
    }

    /**
     * 测试hash
     */
    @Test
    public void testHash() {
        //hset hget hdel hkeys hvals
        HashOperations hashOperations = redisTemplate.opsForHash();
        hashOperations.put("100", "name", "tom");
        hashOperations.put("100", "age", "20");
        String name = (String) hashOperations.get("100", "name");
        System.out.println(name);
        hashOperations.keys("100"); //[name, age]
        hashOperations.values("100");//[tom, 20]
        hashOperations.delete("100", "age");
    }

    /**
     * 测试list
     */
    @Test
    public void testList() {
        //lpush rpush lpop rpop lrange
        ListOperations listOperations = redisTemplate.opsForList();
        listOperations.leftPush("list", "a");
        listOperations.leftPush("list", "b");
        listOperations.leftPush("list", "c");
        listOperations.rightPush("list", "d");
        listOperations.rightPush("list", "e");
        listOperations.rightPush("list", "f");
        String value = (String) listOperations.leftPop("list");
        System.out.println(value);
        listOperations.range("list", 0, -1);
    }
    
    /**
     * 测试set
     */
    @Test
    public void testSet() {
        //sadd smembers srem
        SetOperations setOperations = redisTemplate.opsForSet();
        setOperations.add("set", "a", "b", "c", "d", "e");
        setOperations.remove("set", "a", "b");
        setOperations.members("set");
    }
    
    /**
     * 测试zset
     */
    @Test
    public void testZSet() {
        //zadd zrange zrem
        ZSetOperations zSetOperations = redisTemplate.opsForZSet();
        zSetOperations.add("zset", "a", 1);
        zSetOperations.add("zset", "b", 2);
        zSetOperations.add("zset", "c", 3);
        zSetOperations.add("zset", "d", 4);
        zSetOperations.add("zset", "e", 5);
        zSetOperations.range("zset", 0, -1);
        zSetOperations.remove("zset", "a", "b");
    }

    /**
     * 通用 
     */
    @Test
    public void testCommon() {
        Set keys = redisTemplate.keys("*");
        System.out.println(keys);

        Boolean city = redisTemplate.hasKey("city");
        Boolean code = redisTemplate.hasKey("code");

        for (Object key : keys) {
            DataType type = redisTemplate.type(key);
            System.out.println(type.name());
        }
        redisTemplate.delete("lock");
    }
}

不用了记得注释,不然影响启动速度

相关推荐
ZGG0036 分钟前
MySQL 索引详解:B+ 树、聚簇索引与最左前缀
java·数据库·mysql
点心的游戏开发世界7 分钟前
GDScript 入门笔记(五):函数
笔记·游戏引擎·godot
萧瑟余晖16 分钟前
Java深入解析篇五十四之对象模型详解
java·开发语言
张文是假的啊34 分钟前
Java | record | Controller逻辑
java·开发语言
勿忘,瞬间41 分钟前
Mybatis高阶
java·数据库·mybatis
wp123_12 小时前
硬件设计笔记:1μH功率电感选型实战——线艺 XFL4020-102MEC 与 国产 pin to pin MVLH4020-1R0M 详细参数测评
笔记·科技·硬件架构·硬件工程
嘻哈baby2 小时前
Go 函数中的参数为什么不支持默认值?
java·开发语言·jvm
慧都小项2 小时前
MyEclipse 2026:当 Agent、MCP 与 Java 26 进入 Eclipse 工作流
java·eclipse·springboot·copilot·myeclipse
摇滚侠2 小时前
《SpringBoot 3:入门与应用实战》第 14 章 打包与部署 Spring Boot 应用打包 阅读笔记 41
spring boot·笔记·后端
金立基包装胶水2 小时前
纸袋热封胶常见都有哪些问题?
大数据·笔记·其他