03_2023_Redis_redis客户端

1,Jedis

在Redis官网中提供了各种语言的客户端,地址:https://redis.io/docs/clients/

1.1 导入依赖

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

1.2 jedis操作string

package com.study.redisDemo;

import redis.clients.jedis.Jedis;

public class Demo01_Jedis_String {
    public static void main(String[] args) {
        Jedis jedis = setUp();

        String result = jedis.set("name", "小明");
        System.out.println("result= " + result);

        String name = jedis.get("name");
        System.out.println("name= "+name);

        if(jedis!=null){
            jedis.close();
        }
    }

    public static Jedis setUp(){
        //1.建立连接
        Jedis jedis = new Jedis("127.0.0.1",6379);
        //3.选择库
        jedis.select(0);

        return jedis;
    }
}

1.3 jedis操作hash

package com.study.redisDemo;

import redis.clients.jedis.Jedis;

import java.util.Map;

public class Demo02_Jedis_Hash {
    public static void main(String[] args) {
        Jedis jedis = setUp();

        jedis.hset("user","name","jack");
        jedis.hset("user","age","21");

        Map<String, String> map = jedis.hgetAll("user");
        System.out.println(map);

        if(jedis!=null){
            jedis.close();
        }
    }

    public static Jedis setUp(){
        //1.建立连接
        Jedis jedis = new Jedis("127.0.0.1",6379);
        //3.选择库
        jedis.select(0);

        return jedis;
    }
}

1.4 jedis操作List

package com.study.redisDemo;

import redis.clients.jedis.Jedis;

import java.util.List;
import java.util.Map;

public class Demo03_Jedis_List {
    public static void main(String[] args) {
        Jedis jedis = setUp();

        jedis.lpush("listDemo","linailong1","linailong2");

        List<String> users = jedis.lrange("listDemo", 0, -1);
        System.out.println(users.size());
        for (String user : users) {
            System.out.println(user);
        }

        if(jedis!=null){
            jedis.close();
        }
    }

    public static Jedis setUp(){
        //1.建立连接
        Jedis jedis = new Jedis("127.0.0.1",6379);
        //3.选择库
        jedis.select(0);

        return jedis;
    }
}

1.5 jedis操作set

package com.study.redisDemo;

import redis.clients.jedis.Jedis;

import java.util.Iterator;
import java.util.List;
import java.util.Set;

public class Demo04_Jedis_Set {
    public static void main(String[] args) {
        Jedis jedis = setUp();

        jedis.sadd("setDemo","linailong1","linailong2","linailong3","linailong3");

        Set<String> setDemo = jedis.smembers("setDemo");
        System.out.println(setDemo);

        if(jedis!=null){
            jedis.close();
        }
    }

    public static Jedis setUp(){
        //1.建立连接
        Jedis jedis = new Jedis("127.0.0.1",6379);
        //3.选择库
        jedis.select(0);

        return jedis;
    }
}

1.6 jedis操作sortedset

package com.study.redisDemo;

import redis.clients.jedis.Jedis;

import java.util.Set;

public class Demo05_Jedis_SortedSet {
    public static void main(String[] args) {
        Jedis jedis = setUp();

        jedis.zadd("SortedSetDemo",25,"linailong");
        jedis.zadd("SortedSetDemo",24,"liujuan");
        jedis.zadd("SortedSetDemo",15,"王符文");
        Set<String> sortedSetDemo = jedis.zrange("SortedSetDemo", 0, -1);
        System.out.println(sortedSetDemo);

        if(jedis!=null){
            jedis.close();
        }
    }

    public static Jedis setUp(){
        //1.建立连接
        Jedis jedis = new Jedis("127.0.0.1",6379);
        //3.选择库
        jedis.select(0);

        return jedis;
    }
}

1.7 jedis连接池

  • JedisConnectionFacotry:工厂设计模式是实际开发中非常常用的一种设计模式,我们可以使用工厂,去降低代的耦合,比如Spring中的Bean的创建,就用到了工厂设计模式

  • 静态代码块:随着类的加载而加载,确保只能执行一次,我们在加载当前工厂类的时候,就可以执行static的操作完成对 连接池的初始化

  • 最后提供返回连接池中连接的方法.

package com.study.redisDemo;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

import java.time.Duration;

public class Demo06_Jedis_Pool {
    private static final JedisPool jedisPool;

    static{
        //配置连接池
        JedisPoolConfig poolConfig = new JedisPoolConfig();
        poolConfig.setMaxTotal(8);
        poolConfig.setMaxIdle(8);
        poolConfig.setMinIdle(0);
        poolConfig.setMaxWait(Duration.ofMillis(1000));
        jedisPool = new JedisPool(poolConfig,"127.0.0.1",6379,1000);
    }

    public static void main(String[] args)throws Exception {
        Jedis jedis = getJedis();

        String result = jedis.set("name", "小明");
        System.out.println("result= " + result);

        String name = jedis.get("name");
        System.out.println("name= "+name);

        if(jedis!=null){
            jedis.close();
        }
    }

    public static Jedis getJedis(){
        return jedisPool.getResource();
    }
}

2,SpringDataRedis

SpringData是Spring中数据操作的模块,包含对各种数据库的集成,其中对Redis的集成模块就叫做SpringDataRedis,官网地址:https://spring.io/projects/spring-data-redis

  • 提供了对不同Redis客户端的整合(Lettuce和Jedis)
  • 提供了RedisTemplate统一API来操作Redis
  • 支持Redis的发布订阅模型
  • 支持Redis哨兵和Redis集群
  • 支持基于Lettuce的响应式编程(Lettuce之前实在es那里有)
  • 支持基于JDK.JSON.字符串.Spring对象的数据序列化及反序列化
  • 支持基于Redis的JDKCollection实现

SpringDataRedis中提供了RedisTemplate工具类,其中封装了各种对Redis的操作。并且将不同数据类型的操作API封装到了不同的类型中:
在这里插入图片描述

2.1 导入依赖

 <!--Redis依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <version>2.3.4.RELEASE</version>
        </dependency>
        <!--连接池依赖-->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
            <version>2.11.1</version>
        </dependency>

2.2 配置文件

server:
  port: 18082

spring:
  application:
    name: springboot_redis
  redis:
    host: 127.0.0.1
    port: 6379
    database: 0
    lettuce:
      pool:
        max-active: 8 #最大连接数
        max-idle: 8 #最大空闲连接
        min-idle: 0 #最小空闲连接
        #连接等待时间
        max-wait: 100

2.3 redisTemplate操作String

@Autowired
    RedisTemplate redisTemplate;

    @GetMapping("redisString")
    private void redisString(){
        redisTemplate.opsForValue().set("person","linailong");
        String person = redisTemplate.opsForValue().get("person").toString();
        System.out.println(person);
    }

2.4 redisTemplate操作Hash

 @GetMapping("redisHash")
    private void redisHash(){
        redisTemplate.opsForHash().put("user","name","linailong");
        redisTemplate.opsForHash().put("user","age",25);
        redisTemplate.opsForHash().put("user","hoddy","java,golang");

        Object hoddy = redisTemplate.opsForHash().get("user","hoddy");
        System.out.println(hoddy);

        Object user = redisTemplate.opsForHash().values("user");
        System.out.println(user);
    }

2.5 redisTemplate操作List

@GetMapping("redisList")
    private void redisList(){
        redisTemplate.opsForList().leftPush("listDemo","linailong1");
        redisTemplate.opsForList().leftPush("listDemo","linailong2");
        redisTemplate.opsForList().leftPush("listDemo","linailong3");
        List<String> persons = redisTemplate.opsForList().range("listDemo", 0, -1);
        for (String person : persons) {
            System.out.println(person);
        }
    }

2.6 redisTemplate操作Set

 @GetMapping("redisSet")
    private void redisSet(){
        redisTemplate.opsForSet().add("zsetDemo","linailong1","linailong2","linailong3","linailong3");
        Set zsetDemo = redisTemplate.opsForSet().members("zsetDemo");
        System.out.println(zsetDemo);
    }

2.7 redisTemplate操作Zset

@GetMapping("redisZset")
    private void redisZset(){
        redisTemplate.opsForZSet().add("zsetDemo","linailong",25);
        redisTemplate.opsForZSet().add("zsetDemo","liujuan",24);
        redisTemplate.opsForZSet().add("zsetDemo","wangfuwen",15);
        Set zsetDemo = redisTemplate.opsForZSet().range("zsetDemo", 0, -1);
        System.out.println(zsetDemo);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值