Springboot集成Redis

1.redis下载

https://www.runoob.com/redis/redis-install.html

启动

redis-server.exe redis.windows.conf

2.引入依赖

		<!--redis-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <version>2.7.17</version>
        </dependency>
        <!--redis客户端-连接池-->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-compress</artifactId>
            <version>1.21</version>
        </dependency>

3.application.yml

spring:
  # redis配置
  redis:
    host: localhost
    port: 6379

4.config.RedisConfig

//Redis配置类,需要用@Configuration注解标记这个类是一个配置类
//现在这个配置类是一个固定的模板,如果需要配置redis,直接拿走用即可
@Configuration
public class RedisConfig {
    //编写我们自己的RedisTemplate
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
        template.setConnectionFactory(redisConnectionFactory);

        //Json序列化配置
        //设置序列化的方式,想要用jackson序列化,直接new出它的对象,传object.class,表示解析任何的对象,放进setKeySerializer方法中即可
        Jackson2JsonRedisSerializer<Object> objectJackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<Object>(Object.class);
        ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        objectJackson2JsonRedisSerializer.setObjectMapper(om);

        //string的序列化
        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();

        //key采用String的序列化方式
        template.setKeySerializer(stringRedisSerializer);
        //hash的key采用String的序列化方式
        template.setHashKeySerializer(stringRedisSerializer);
        //value的序列化采用jackson
        template.setValueSerializer(objectJackson2JsonRedisSerializer);
        //hash的value采用jackson
        template.setHashValueSerializer(objectJackson2JsonRedisSerializer);

        template.afterPropertiesSet();
        return template;
    }
}

5.redis操作

1. 字符串(String)操作
设置值:redisTemplate.opsForValue().set(K key, V value)
获取值:redisTemplate.opsForValue().get(Object key)
追加值:redisTemplate.opsForValue().append(K key, String valueToAppend)
设置值及过期时间:redisTemplate.opsForValue().set(K key, V value, long timeout, TimeUnit unit)
2. 列表(List)操作
左侧添加:redisTemplate.opsForList().leftPush(K key, V... values)
右侧添加:redisTemplate.opsForList().rightPush(K key, V... values)
左侧弹出:redisTemplate.opsForList().leftPop(K key)
右侧弹出:redisTemplate.opsForList().rightPop(K key)
获取列表长度:redisTemplate.opsForList().size(K key)
获取指定范围:redisTemplate.opsForList().range(K key, long start, long end)
3. 集合(Set)操作
添加元素:redisTemplate.opsForSet().add(K key, V... values)
移除元素:redisTemplate.opsForSet().remove(K key, Object... values)
判断元素是否存在:redisTemplate.opsForSet().isMember(K key, Object o)
获取集合元素数量:redisTemplate.opsForSet().size(K key)
获取集合所有元素:redisTemplate.opsForSet().members(K key)
4. 有序集合(ZSet 或 SortedSet)操作
添加元素:redisTemplate.opsForZSet().add(K key, Set<TypedTuple<V>> tuples)
移除元素:redisTemplate.opsForZSet().remove(K key, Object... values)
增加分数:redisTemplate.opsForZSet().incrementScore(K key, V value, double delta)
获取元素分数:redisTemplate.opsForZSet().score(K key, Object o)
获取指定范围元素:redisTemplate.opsForZSet().rangeByScore(K key, double min, double max)
获取集合大小:redisTemplate.opsForZSet().size(K key)
5. 哈希(Hash)操作
添加键值对:redisTemplate.opsForHash().put(H key, HK hashKey, HV value)
获取值:redisTemplate.opsForHash().get(H key, Object hashKey)
删除键值对:redisTemplate.opsForHash().delete(H key, Object... hashKeys)
判断哈希中是否存在某个键:redisTemplate.opsForHash().hasKey(H key, Object hashKey)
获取哈希中所有键:redisTemplate.opsForHash().keys(H key)
获取哈希中所有值:redisTemplate.opsForHash().values(H key)
6. 其他操作
删除键:redisTemplate.delete(Object... keys)
判断键是否存在:redisTemplate.hasKey(Object key)
设置键的过期时间:redisTemplate.expire(K key, long timeout, TimeUnit unit)
获取键的剩余生存时间:redisTemplate.getExpire(K key, TimeUnit unit)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值