redis的java客户端

一.jedis

jedis就是通过java来使用redis的客户端工具

jedis连接

1.引依赖坐标

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>3.2.0</version>
</dependency>

2.建立连接

private Jedis jedis;

@BeforeEach
void setUp(){
    //建立连接
    jedis = new Jedis("192.168.159.129",6379);
    //设置密码
    jedis.auth("123456");
    //选择库
    jedis.select(0);
}

3.使用jedis

@Test
void test(){
    //插入数据,方法名称就是redis命令名称
    String result = jedis.set("name","jack");
    System.out.println(result);
    //获取数据
    String name = jedis.get("name");
    System.out.println(name);
}

4.释放资源

@AfterEach
void tearDown(){
   if(jedis!=null){
		jedis.close;
   } 
}

jedis连接池

jedis本身是线程不安全的,频繁的创建和销毁会有性能损耗,故推荐使用连接池

public class TestJedisPool {
    @Test
    public void test01(){

//        1:创建连接池的配置对象
        JedisPoolConfig config = new JedisPoolConfig();
        //设置最大链接数
        config.setMaxTotal(20);
        //设置空闲连接数
        config.setMaxIdle(10);
//        2:创建连接池 参1:Redis服务器ip地址  参2:端口号
        JedisPool pool = new JedisPool(config, "localhost", 6379);
//        3:从连接池中获取一个连接
        Jedis jedis = pool.getResource();//获取一个连接
//        4:执行Redis执行  Map<String,String>   set   get
        jedis.set("name","JedisPool连接池");
        String value = jedis.get("name");
        System.out.println(value);
//        5:释放连接
        jedis.close();
    }
}

二.SpringDataRedis

提供RedisTemplate统一API操作Redis

但是缺点是可读性插,易出bug

所以使用JSON的序列化方式,但是这样会带来额外开销

所以推荐统一使用String序列化器

Spring默认提供了一个StringRedisTemplate类,key和value就是使用String序列化方式.

@Autowired
    private StringRedisTemplate stringRedisTemplate;
    //JSON工具
    private static final ObjectMapper mapper = new ObjectMapper();
    @Autowired
    private RedisTemplate<String,Object> redisTemplate;
    @Test
    void testString1(){
        redisTemplate.opsForValue().set("user",new DemoUser("zhangsan",18));
        DemoUser user = (DemoUser) redisTemplate.opsForValue().get("user");
        System.out.println(user);
    }
    @Test
    void testString2() throws JsonProcessingException {
        //准备对象
        DemoUser user = new DemoUser("虎哥",18);
        //手动序列化
        String json = mapper.writeValueAsString(user);
        //写入一条数据到redis
        stringRedisTemplate.opsForValue().set("user:12",json);
        //读取数据
        String val = stringRedisTemplate.opsForValue().get("user:12");
        //反序列化
        DemoUser user1 = mapper.readValue(val,DemoUser.class);
        System.out.println(user1);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值