Spring Boot 之Redis基本使用

Redis

是一款key-value存储结构的内存级NoSQL数据库

  • 支持多种数据格式
  • 支持持久化
  • 支持集群
  • 存取速度快
  • 操作具有原子性,两个客户端并发访问,Redis服务器能接受更新后的值

下载地址:https://github.com/tporadowski/redis/releases

基本使用
启动服务端 redis-server.exe
启动客户端 redis-cli
set name zty	//设置值
get name			//获取值"zty"
//hashset 方式存储 在key里边存储多个key
hset keya a aaa
hset keya b bbb
hget keya a 	//获取keya 里边a 的值 “aaa”
hget keya a 	//获取keya 里边b 的值 “bbb”
key * 			//查询所有key
EXPIRE name 10  //设置过期时间10秒
EXISTS name 	//判断是否存在
move name 		//移除当前key
spring boot 整合redis
//导入依赖
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
		
//配置application.yaml
spring:
  redis:
    host: localhost
    port: 6379

//测试
	@Resource
	private RedisTemplate redisTemplate ;
		@Test
	void set() {
		ValueOperations valueOperations = redisTemplate.opsForValue();
		valueOperations.set("name","zty");
	}
	@Test
	void get() {
		ValueOperations valueOperations  = redisTemplate.opsForValue();
		System.out.println( valueOperations.get("name"));
	}
	
    @Test
    void hset() {
        HashOperations hashOperations = redisTemplate.opsForHash();
        hashOperations.put("info","hobby","codding");
    }

    @Test
    void hget() {
        HashOperations hashOperations = redisTemplate.opsForHash();
        Object o = hashOperations.get("info","hobby");
        System.out.println(o);
    }

lettus和jedis的区别:

spring boot默认使用lettus客户端连接redis

  • jedis连接redis服务器是直连模式,当多线程下使用jedis会存在线程安全问题,解决方案可以通过配置连接池使每个连接专用,这样整体性能就大受影响
  • lettus基于Netty框架进行与Redis服务器连接,底层设计采用StatefulRedisConnection.StatefulRedisConnection自身是线程安全的,可以保障并发产生的安全问题,所以一个连接可以多个线程复用。也支持多连接实例一起工作
自定义RedisTemplate序列化机制
@Configuration
public class RedisConfig {
    @Bean
    public RedisTemplate<Object,Object> redisTemplate( RedisConnectionFactory redisConnectionFactory){
        RedisTemplate<Object,Object> tpl = new RedisTemplate<Object,Object>();
        tpl.setConnectionFactory(redisConnectionFactory);   //使用json格式序列化对象,对缓存数据key和value进行转换
        Jackson2JsonRedisSerializer jsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
        ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        jsonRedisSerializer.setObjectMapper(om);
        tpl.setDefaultSerializer(jsonRedisSerializer);
        return tpl;
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值