jedis操作 redis

本文介绍如何在SpringMVC项目中配置Redis的Jedis连接池,包括Maven依赖、配置文件设置及Spring Bean定义等步骤,并提供了一个简单的测试类示例。

spring mvc 配置 jedis连接池

首先 maven 依赖 来一下

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

然后配置文件搞一下

#redis缓存配置
redis.host=127.0.0.1
redis.port=6379
redis.timeout=2000
#注意,如果没有password,此处不设置值,但这一项要保留
redis.password=xxx
redis.db.index=1

然后spring 配置个bean

    <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
        <property name="maxIdle" value="300" /> <!-- 最大能够保持idel状态的对象数  -->
        <property name="maxTotal" value="60000" /> <!-- 最大分配的对象数 -->
        <property name="testOnBorrow" value="true" /> <!-- 当调用borrow Object方法时,是否进行有效性检查 -->
    </bean>

    <bean id="jedisPool" class="redis.clients.jedis.JedisPool">
        <constructor-arg name="poolConfig" ref="jedisPoolConfig" />
        <constructor-arg name="host" value="${redis.host}" />
        <constructor-arg name="port" value="${redis.port}" type="int" />
        <constructor-arg name="timeout" value="${redis.timeout}" type="int" />
        <constructor-arg name="password" value="#{'${redis.password}'!=''?'${redis.password}':null}" />
        <constructor-arg name="database" value="${redis.db.index}" type="int" />
    </bean>

测试类

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"classpath:applicationContext.xml","classpath:mybatis-servlet.xml"})
public class JedisTest {

    @Autowired
    JedisPool pool;

    @Test
    public void jedis(){
        try {
            Jedis jedis=pool.getResource();
            Admins admins = new Admins();
            admins.setName("张三");
            admins.setPwd("lisi");
            jedis.set("admin".getBytes(), SerializeUtil.serialize(admins));
            admins =  (Admins)SerializeUtil.deserialize(jedis.get("admin".getBytes()));
            System.err.println(admins.getName());
        } catch (Exception e) {
            System.err.println(e);
        }


    }

}

中间用到了一个 帮助类

package com.yc.education.util;

import java.io.*;

public class SerializeUtil {

    /**
     * 反序列化
     * @param bytes
     * @return
     */
    public static Object deserialize(byte[] bytes) {

        Object result = null;

        if (isEmpty(bytes)) {
            return null;
        }

        try {
            ByteArrayInputStream byteStream = new ByteArrayInputStream(bytes);
            try {
                ObjectInputStream objectInputStream = new ObjectInputStream(byteStream);
                try {
                    result = objectInputStream.readObject();
                }
                catch (ClassNotFoundException ex) {
                    throw new Exception("Failed to deserialize object type", ex);
                }
            }
            catch (Throwable ex) {
                throw new Exception("Failed to deserialize", ex);
            }
        } catch (Exception e) {
        }
        return result;
    }

    public static boolean isEmpty(byte[] data) {
        return (data == null || data.length == 0);
    }

    /**
     * 序列化
     * @param object
     * @return
     */
    public static byte[] serialize(Object object) {

        byte[] result = null;

        if (object == null) {
            return new byte[0];
        }
        try {
            ByteArrayOutputStream byteStream = new ByteArrayOutputStream(128);
            try  {
                if (!(object instanceof Serializable)) {
                    throw new IllegalArgumentException(SerializeUtil.class.getSimpleName() + " requires a Serializable payload " +
                            "but received an object of type [" + object.getClass().getName() + "]");
                }
                ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteStream);
                objectOutputStream.writeObject(object);
                objectOutputStream.flush();
                result =  byteStream.toByteArray();
            }
            catch (Throwable ex) {
                throw new Exception("Failed to serialize", ex);
            }
        } catch (Exception ex) {

        }
        return result;
    }

}

好了 代码贴完了

### 如何使用 Jedis 操作 Redis 示例教程 #### 连接至 Redis 数据库 为了连接到 Redis 数据库,需通过 `Jedis` 类实例化一个对象并提供目标服务器地址与端口。下面展示了一个简单的例子用于建立同本地运行的 Redis 实例之间的链接。 ```java import redis.clients.jedis.Jedis; public class ConnectToRedis { public static void main(String[] args) { String host = "localhost"; int port = 6379; try (Jedis jedis = new Jedis(host, port)) { System.out.println("Connected to Redis"); } } } ``` 此段代码创建了指向本机默认端口上的 Redis 服务的新连接,并打印确认信息表示已成功连接[^2]。 #### 基础命令操作 一旦建立了有效的连接,则可以通过调用相应的方法执行各种基本的数据结构处理指令: - **字符串操作** 对于简单键值对存储而言,可利用如下方法实现设置(`SET`)和获取(`GET`)操作。 ```java jedis.set("foo", "bar"); // 设置 key-value 对 String value = jedis.get("foo"); // 获取对应 key 的 value System.out.println(value); ``` 上述代码片段展示了怎样向名为 `"foo"` 的键赋值 `"bar"` 并随后检索该键所关联的内容[^4]。 - **列表(Lists)** 和其他复杂类型(如哈希表、集合等) 除了普通的键值对外,还支持更复杂的抽象数据类型的管理,比如列表。这里给出了一种追加元素到列表末端的方式——借助于 `LPUSH` 或者 `RPUSH` 方法;另外还有移除最左边/右边第一个匹配项的功能——分别由 `LREM` 函数完成。 ```java // 向列表左侧添加成员 jedis.lpush("mylist", "item1"); // 查看整个列表内容 List<String> listItems = jedis.lrange("mylist", 0, -1); for (String item : listItems) { System.out.println(item); } // 移除特定数量的第一个匹配项 long removedCount = jedis.lrem("mylist", 1, "itemToRemove"); ``` 以上仅列举了一些常见的 API 调用形式,在实际应用过程中可根据需求灵活选用更多功能强大的接口来进行开发工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值