缓存之Redis--Jedis

1.是什么?

    Redis是一个Key-Value键值对存储系统。我们通常把它用作为缓存服务器。

2.为什么?

  Redis 是一个高性能的key-value数据库
  ②它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便
  ③Redis支持主从同步

3.怎么用?

 3.1 普通使用

      1、获取jedis连接
        Jedis jedis = new Jedis("192.168.142.12");
      2、键值存储
  jedis.set("A","B");
3、获取
  jedis.get("A");
4、删除

  jedis.del("A");

3.2 使用连接池集成到Spring框架中使用

      1、xml配置    
        <!--配置对象-->
	<bean id="jedisConfig" class="redis.clients.jedis.JedisPoolConfig">
		<!-- 可用连接实例的最大数目,默认值为8;-->
		<!-- 如果赋值为-1,表示不限制;如果pool已经分配了maxActive个实例,此时pool状态为exhausted(耗尽) -->
		<property name="maxActive" value="10" />  
		<!-- 控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值也是8 -->
		<property name="maxIdle" value="10" /> 
		<!-- 等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。 -->
		<!--如果超过等待时间,则直接抛出JedisConnectionException;-->
		<property name="maxWait" value="5" />
		<property name="testOnBorrow" value="true" /> <!-- 如果为true,则得到的jedis实例均是可用的-->
	</bean>
	<!-- 连接池  参数依次为配置对象、ip、端口号、密码-->
	<bean id="jedisPool" class="redis.clients.jedis.JedisPool">
		<constructor-arg index="0" ref="jedisConfig" />
		<constructor-arg index="1" value="localhost" />
		<constructor-arg index="2" value="6379" />
		<constructor-arg index="3" value="1000000" />
	</bean>
	<!-- 自定义客户端 -->
	<bean id="jedisClient" class="cn.com.sgming.core.jedis.JedisClient">
		<property name="jedisPool" ref="jedisPool" />
		<property name="serializer" ref="hessianSerializer" />
	</bean>
 
        2、java代码 
public class JedisClient{
	//jedis连接池
	private JedisPool jedisPool;

	public void setJedisPool(JedisPool jedisPool) {
		this.jedisPool = jedisPool;
	}

	/**   
	 * Description: 从连接池中获取jedis连接
	 * @return Jedis
	 */
	public Jedis getResource() {
		return jedisPool.getResource();
	}

	/**
	 * Description: 将jedis连接放回连接池中
	 * @param resource void
	 */
	public void returnResource(Jedis resource) {
		jedisPool.returnResource(resource);
	}

	public Boolean set(String key, byte[] value) {
		String result = null;
		Jedis jedis = getResource();
		try {
			result = jedis.set(key, value);
		} finally {
			returnResource(jedis);
		}
		return result;
	}
	
	public byte[] getBytes(String key) {
		byte[] result = null;
		Jedis jedis = getResource();
		try {
			result = jedis.get(key);
		} finally {
			returnResource(jedis);
		}
		return result;
	}

	public Boolean delete(String key) {
		Long result = null;
		Jedis jedis = getResource();
		try {
			result = jedis.del(key);
		} finally {
			returnResource(jedis);
		}
		return result;
	}
}
*注意:redis可以对所有的内容进行二进制的存储,而java是可以对所有对象进行序列化的,要注意序列化问题(参考redis序列化
 
 序列化可参考:Java基础学习总结——Java对象的序列化和反序列化,但是有个问题,我的测试程序改了serialVersionUID以后没有抛出异常,后续在跟进一下吧。 

最后放两个相关链接:
      

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值