Jedis的使用说明

Jedis 是 Redis 官方首选的 Java 客户端开发包。使用Jedis提供的Java API对Redis进行操作,是Redis官方推崇的方式;并且,使用Jedis提供的对Redis的支持也最为灵活、全面;不足之处,就是编码复杂度较高。

jedis基本使用

引入jedis的依赖包

<dependency>
   <groupId>redis.clients</groupId>
   <artifactId>jedis</artifactId>
   <version>2.8.1</version>
   <type>jar</type>
</dependency>

建立一个到Redis的连接,并进行操作

    @Test
    public void BasicJedisTest(){
        //连接redis
        Jedis jedis = new Jedis("127.0.0.1",6379);
        //键值存储
        jedis.set("name","hello world");
        //取值
        String name = jedis.get("name");
        logger.debug(name);
        //删除
        jedis.del("name");
    }

redis连接池的使用

在Jedis中,管理Redis连接的类是JedisPool。

@Test
    public void JedisPoolTest() {
        //连接池初始化
        JedisPool jedisPool = new JedisPool("127.0.0.1", 6379);
        Jedis jedis = null;
        try {
            //获取链接
            jedis = jedisPool.getResource();
            //键值存储
            jedis.set("name", "hello world");
            //取值
            String name = jedis.get("name");
            logger.debug(name);
            //删除
            jedis.del("name");
        } finally {
            //关闭连接
            if (jedis != null) {
                jedis.close();
            }
        }
        //连接池销毁
        jedisPool.destroy();
    }

jedis 常用操作

jedis 常用的操作对象有:字符串,列表(list)、集合(set)、有序集合(sorted set)、哈希表(hash)等数据结构

  • 字符串的相关操作
//键值存储
jedis.set("name", "hello world");
//取值
String name = jedis.get("name");
logger.debug(name);
//删除
jedis.del("name");
  • 列表的相关操作
//右边入队
jedis.rpush("userList", "James");
jedis.rpush("userList", "Jonathan");
jedis.rpush("userList", "Steve");
//返回列表范围:从0开始,到最后一个(-1),包含截止
List<String> userList = jedis.lrange("userList", 0, -1);
//设置:位置1处为新值
jedis.lset("userList", 1, "Nick Xu");
//左边出队
jedis.lpop("userList");
//返回长度:
Long size = jedis.llen("userList");
//进行裁剪,从0开始,到最后一个(-1),包含截止
jedis.ltrim("userList",0,0);
  • 集合的相关操作
    集合和列表不同,集合中的元素是无序的,因此元素也不能重复
//集合数据的添加,一次可添加多个
jedis.sadd("code", "java");
jedis.sadd("code", "node", "python", "scala");
jedis.sadd("code", "java", "swift");
//集合的遍历
Set<String> codeSet = jedis.smembers("code");
//元素的删除(一次可删除多个)
jedis.srem("code", "node");
//返回集合的长度
Long size = jedis.scard("code");
//判断集合是否包含某个元素
Boolean isMember = jedis.sismember("code", "java");
//集合的运算
jedis.sadd("code1", "java", "C#", "C");
//集合的交运算
Set<String> sinterSet = jedis.sinter("code", "code1");
//集合的差集
Set<String> sdiffSet = jedis.sdiff("code", "code1");
//集合的并集
Set<String> sunionSet = jedis.sunion("code", "code1");
  • 有序集合的相关操作
    有序集合在集合的基础上,增加了一个用于排序的参数。
//元素的添加,根据第二个参数进行排序
jedis.zadd("userSet", 1, "James");
jedis.zadd("userSet", 3, "John");
jedis.zadd("userSet", 2, "Jonathan");
//元素相同时,更新当前的权重。
jedis.zadd("userSet", 4, "Jonathan");
//找到从0到-1的所有元素。
Set<String> userSet = jedis.zrange("userSet", 1, 2);
  • 哈希表的相关操作
//初始化map
Map<String, String> map = new HashMap<String, String>();
map.put("age", "20");
map.put("weight", "90KG");
map.put("height", "180cm");
//存放hashMap
jedis.hmset("people", map);
//获取hashMap
List<String> data = jedis.hmget("people", "age", "height");
  • 其他操作
//对key的模糊查询
Set<String> keys = jedis.keys("co*");
//判断某个key是否存在
Boolean isExists = jedis.exists("code2");
//设置过期时间
jedis.expire("code",60);
//获取剩余存活时间(-1代表永久)
long seconds = jedis.ttl("code");
//去掉key的expire设置:不再有失效时间
jedis.persist("code");

//为指定的 key 设置值及其过期时间。如果key已经存在,将会替换旧的值
jedis.setex("name",100,"hello");

//int类型采用string类型的方式存储
jedis.set("amount", 2 + "");
//递增或递减:incr()/decr()
jedis.incr("amount");
//增加或减少:incrBy()/decrBy()
jedis.incrBy("amount", 5);
//清空当前库
jedis.flushDB();
//清空所有库
jedis.flushAll();
### 集成和使用Jedis库到Spring Boot项目的示例 为了在Spring Boot项目中集成并使用Jedis库,可以按照以下方法实现。以下是详细的说明以及代码示例。 #### 添加依赖项 首先,在`pom.xml`文件中添加Jedis的相关依赖项[^5]: ```xml <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>4.0.0</version> <!-- 版本号可以根据实际需求调整 --> </dependency> ``` 如果正在使用Gradle构建工具,则可以在`build.gradle`文件中添加如下内容: ```gradle implementation 'redis.clients:jedis:4.0.0' // 版本号可根据实际情况更改 ``` #### 创建配置类 接下来,创建一个用于管理Redis连接池的配置类。通过这种方式,能够更高效地管理和重用Redis客户端实例[^6]。 ```java import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class RedisConfiguration { @Bean public JedisPool jedisPool() { JedisPoolConfig poolConfig = new JedisPoolConfig(); poolConfig.setMaxTotal(10); // 设置最大连接数 poolConfig.setMaxIdle(5); // 设置最大空闲连接数 poolConfig.setMinIdle(1); // 设置最小空闲连接数 String redisHost = "localhost"; // 替换为实际的Redis主机地址 int redisPort = 6379; // 默认端口为6379 return new JedisPool(poolConfig, redisHost, redisPort); } } ``` #### 使用Jedis操作数据 下面是一个简单的服务类示例,展示如何利用注入的`JedisPool`对象来执行基本的Redis命令[^7]。 ```java import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class RedisService { private final JedisPool jedisPool; @Autowired public RedisService(JedisPool jedisPool) { this.jedisPool = jedisPool; } public String setValue(String key, String value) { try (Jedis jedis = jedisPool.getResource()) { jedis.set(key, value); return "Value set successfully"; } } public String getValue(String key) { try (Jedis jedis = jedisPool.getResource()) { return jedis.get(key); } } public Long deleteKey(String key){ try (Jedis jedis = jedisPool.getResource()){ return jedis.del(key); } } } ``` 以上代码展示了设置键值对、获取键对应的值以及删除指定键的操作。 #### 测试功能 可以通过编写单元测试或者控制器接口调用来验证上述逻辑是否正常工作。例如,定义一个RESTful API以便于外部访问这些功能[^8]: ```java import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @RestController @RequestMapping("/api/redis") public class RedisController { @Resource private RedisService redisService; @PostMapping("/set/{key}/{value}") public String setValue(@PathVariable String key, @PathVariable String value) { return redisService.setValue(key, value); } @GetMapping("/get/{key}") public String getValue(@PathVariable String key) { return redisService.getValue(key); } @DeleteMapping("/delete/{key}") public String deleteKey(@PathVariable String key){ long result = redisService.deleteKey(key); return result > 0 ? "Deleted Successfully" : "No Key Found"; } } ``` 这样就完成了整个流程的设计与实现。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值