Redis:SpringBoot中的Redis基本增删改查

 💥 该系列属于【SpringBoot基础】专栏,如您需查看其他SpringBoot相关文章,请您点击左边的连接

目录

 一、Redis

1. 简介

2. 数据类型

3. 五种数据类型常用命令

(1)字符串操作命令

(2)哈希操作命令

(3)列表操作命令

(4)集合操作命令

(5)有序集合操作命令

二、项目准备

1. 添加依赖

2. 配置文件

3. 编写Redis配置类

三、基本操作

1. 字符串操作

2. 哈希操作

3. 列表操作

4. 集合操作

5. 有序集合操作

6. 通用命令


Spring Data Redis 是 Spring 的一部分,对 Redis 底层开发包进行了高度封装。在 Spring 项目中,可以使用Spring Data Redis来简化操作。

 一、Redis

1. 简介

Redis是一个基于内存的key-value结构数据库。Redis 是互联网技术领域使用最为广泛的存储中间件

官网:Redis - The Real-time Data Platform 中文网:Redis中文网

主要特点:

  • 基于内存存储,读写性能高

  • 适合存储热点数据(热点商品、资讯、新闻)

  • 企业应用广泛

2. 数据类型

Redis存储的是key-value结构的数据,其中key是字符串类型,value有5种常用的数据类型:

  • 字符串 string

  • 哈希 hash

  • 列表 list

  • 集合 set

  • 有序集合 sorted set / zset

3. 五种数据类型常用命令

(1)字符串操作命令

Redis 中字符串类型常用命令:

  • SET key value 设置指定key的值

  • GET key 获取指定key的值

  • SETEX key seconds value 设置指定key的值,并将 key 的过期时间设为 seconds 秒

  • SETNX key value 只有在 key 不存在时设置 key 的值

更多命令可以参考Redis中文网:Redis中文网

(2)哈希操作命令

Redis hash 是一个string类型的 field 和 value 的映射表,hash特别适合用于存储对象,常用命令:

  • HSET key field value 将哈希表 key 中的字段 field 的值设为 value

  • HGET key field 获取存储在哈希表中指定字段的值

  • HDEL key field 删除存储在哈希表中的指定字段

  • HKEYS key 获取哈希表中所有字段

  • HVALS key 获取哈希表中所有值

(3)列表操作命令

Redis 列表是简单的字符串列表,按照插入顺序排序,常用命令:

  • LPUSH key value1 [value2] 将一个或多个值插入到列表头部

  • LRANGE key start stop 获取列表指定范围内的元素

  • RPOP key 移除并获取列表最后一个元素

  • LLEN key 获取列表长度

  • BRPOP key1 [key2 ] timeout 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超 时或发现可弹出元素为止

(4)集合操作命令

Redis set 是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据,常用命令:

  • SADD key member1 [member2] 向集合添加一个或多个成员

  • SMEMBERS key 返回集合中的所有成员

  • SCARD key 获取集合的成员数

  • SINTER key1 [key2] 返回给定所有集合的交集

  • SUNION key1 [key2] 返回所有给定集合的并集

  • SREM key member1 [member2] 移除集合中一个或多个成员

(5)有序集合操作命令

Redis有序集合是string类型元素的集合,且不允许有重复成员。每个元素都会关联一个double类型的分数。常用命令:

常用命令:

  • ZADD key score1 member1 [score2 member2] 向有序集合添加一个或多个成员

  • ZRANGE key start stop [WITHSCORES] 通过索引区间返回有序集合中指定区间内的成员

  • ZINCRBY key increment member 有序集合中对指定成员的分数加上增量 increment

  • ZREM key member [member ...] 移除有序集合中的一个或多个成员

二、项目准备

1. 添加依赖

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

2. 配置文件

spring.redis.host=localhost
spring.redis.port=6379
#spring.redis.password=123456

3. 编写Redis配置类

@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;
    }
}

三、基本操作

1. 字符串操作

(1)代码

    @Test
    public void testString() {
        // SET
        redisTemplate.opsForValue().set("city", "北京");

        // GET
        String city = (String) redisTemplate.opsForValue().get("city");
        System.out.println(city);//北京

        // SETEX 设置有效时长3分钟
        redisTemplate.opsForValue().set("code", "1234", 3, TimeUnit.MINUTES);

        // SETNX
        redisTemplate.opsForValue().setIfAbsent("lock", "1");
        redisTemplate.opsForValue().setIfAbsent("lock", "2"); //不执行,因为已经存在lock键

    }

(2)测试结果

 

2. 哈希操作

(1)代码

    @Test
    public void testHash() {
        HashOperations hashOperations = redisTemplate.opsForHash();

        //HSET
        //hashOperations.put(key,hashkey,value)
        hashOperations.put("100", "name", "tom");
        hashOperations.put("100", "age", "22");

        //HGET
        String name = (String) hashOperations.get("100", "name");
        System.out.println(name); //tom

        //HKEYS
        Set keys = hashOperations.keys("100");
        System.out.println(keys); //[name, age]

        //HVALS
        List values = hashOperations.values("100");
        System.out.println(values); //[tom, 22]

        //HDEL
        hashOperations.delete("100", "age");

    }

(2)测试结果

3. 列表操作

(1)代码

    @Test
    public void testList() {

        ListOperations listOperations = redisTemplate.opsForList();

        //LPUSH, 后进先出
        listOperations.leftPushAll("MyList", "a", "b", "c");
        listOperations.leftPush("MyList", "d");

        //LRANGE
        List myList = listOperations.range("MyList", 0, -1);
        System.out.println(myList); //[d, c, b, a]

        //RPOP
        listOperations.rightPop("MyList");

        //LLEN
        Long size = listOperations.size("MyList");
        System.out.println(size); //3

    }

(2)测试结果

4. 集合操作

(1)代码

    @Test
    public void testSet() {
        SetOperations setOperations = redisTemplate.opsForSet();

        //SADD
        setOperations.add("set1", "a", "b", "c", "d");
        setOperations.add("set2", "a", "b", "x", "y");

        //SMEMBERS
        Set members = setOperations.members("set1");
        System.out.println(members); //[d, b, c, a]

        //SCARD
        Long size = setOperations.size("set1");
        System.out.println(size); //4

        //SINTER
        Set intersect = setOperations.intersect("set1", "set2");
        System.out.println(intersect); //[b, a]

        //SUNION
        Set union = setOperations.union("set1", "set2");
        System.out.println(union); //[b, y, d, c, a, x]

        //SREM
        setOperations.remove("set1", "a", "b");

    }

(2)测试结果

5. 有序集合操作

(1)代码

    @Test
    public void testZset() {
        ZSetOperations zSetOperations = redisTemplate.opsForZSet();

        //ZADD
        zSetOperations.add("zset1", "a", 10);
        zSetOperations.add("zset1", "b", 11);
        zSetOperations.add("zset1", "c", 12);

        //ZRANGE
        Set zset1 = zSetOperations.range("zset1", 0, -1);
        System.out.println(zset1); //[a, b, c]

        //ZINCRBY,+10
        zSetOperations.incrementScore("zset1", "c", 10);

        //ZREM,移除a和b
        zSetOperations.remove("zset1", "a", "b");

    }

(2)测试结果

6. 通用命令

代码

    @Test
    public void testCommon() {
        //KEYS
        Set keys = redisTemplate.keys("*");
        System.out.println(keys); //[set2, set1, 100, MyList, zset1, city, lock]

        //EXISTS
        Boolean name = redisTemplate.hasKey("name");
        System.out.println(name); //false

        //TYPE
        DataType type = redisTemplate.type("set1");
        System.out.println(type.name()); //SET

        //DEL
        redisTemplate.delete("MyList");

    }

 

  • 12
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot整合Redis实现商品的增删改查,你可以按照以下步骤进行操作: 1. 首先,在pom.xml文件添加Redis的依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> ``` 2. 在application.properties文件配置Redis连接信息: ```properties spring.redis.host=127.0.0.1 spring.redis.port=6379 ``` 你可以根据实际情况修改host和port。 3. 创建一个Redis配置类,用于配置RedisTemplate: ```java @Configuration public class RedisConfig { @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate<String, Object> template = new RedisTemplate<>(); template.setConnectionFactory(redisConnectionFactory); template.setKeySerializer(new StringRedisSerializer()); template.setValueSerializer(new GenericJackson2JsonRedisSerializer()); return template; } } ``` 这里使用了默认的RedisTemplate,并配置了key和value的序列化方式。 4. 创建一个商品实体类,例如Product: ```java public class Product { private String id; private String name; // 其他属性和getter/setter方法省略 } ``` 5. 创建一个商品服务类,例如ProductService,实现商品的增删改查操作: ```java @Service public class ProductService { @Autowired private RedisTemplate<String, Object> redisTemplate; private static final String KEY_PREFIX = "product:"; public void addProduct(Product product) { String key = KEY_PREFIX + product.getId(); redisTemplate.opsForValue().set(key, product); } public Product getProduct(String id) { String key = KEY_PREFIX + id; return (Product) redisTemplate.opsForValue().get(key); } public void updateProduct(Product product) { String key = KEY_PREFIX + product.getId(); redisTemplate.opsForValue().set(key, product); } public void deleteProduct(String id) { String key = KEY_PREFIX + id; redisTemplate.delete(key); } } ``` 这里使用了RedisTemplate的opsForValue()方法来进行操作,具体操作方法包括set、get和delete。 6. 在需要使用商品服务的地方注入ProductService,并调用对应的方法即可实现商品的增删改查。 上述步骤完成后,你就成功地在Spring Boot整合了Redis,并实现了商品的增删改查功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值