redis简单配置
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis简单配置相关的知识,希望对你有一定的参考价值。
redis的使用十分简单,这次以jedis(shardedJedisPool)为例:
(1).导入相应jar包
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency>
(2).使用spring整合redis
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!--shardedJedisPool的相关配置--> <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> <!--新版是maxTotal,旧版是maxActive--> <property name="maxTotal"> <value>200</value> </property> <property name="maxIdle"> <value>50</value> </property> <property name="testOnBorrow" value="true"/> <property name="testOnReturn" value="true"/> </bean> <bean id="shardedJedisPool" class="redis.clients.jedis.ShardedJedisPool" scope="singleton"> <constructor-arg index="0" ref="jedisPoolConfig" /> <constructor-arg index="1"> <list> <bean class="redis.clients.jedis.JedisShardInfo"> <constructor-arg name="host" value="redis://:[email protected]:6379/0" /> </bean> </list> </constructor-arg> </bean> </beans>
(3).创建统一类来管理Redis实例
package com.btc.reids; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import redis.clients.jedis.ShardedJedis; import redis.clients.jedis.ShardedJedisPool; @Repository("jedisDS") public class RedisDataSource { private static final Logger LOG = LoggerFactory.getLogger(RedisDataSource.class); @Autowired private ShardedJedisPool shardedJedisPool; public ShardedJedis getRedisClient() { ShardedJedis shardJedis = null; try { shardJedis = shardedJedisPool.getResource(); return shardJedis; } catch (Exception e) { LOG.error("[JedisDS] getRedisClent error:" + e.getMessage()); if (null != shardJedis) shardJedis.close(); } return null; } public void returnResource(ShardedJedis shardedJedis) { shardedJedis.close(); } public void returnResource(ShardedJedis shardedJedis, boolean broken) { shardedJedis.close(); } }
(4).编写实现操作的具体方法
package com.btc.reids; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import redis.clients.jedis.ShardedJedis; @Repository("redisClient") public class RedisClient { private static final Logger log = LoggerFactory.getLogger(RedisClient.class); @Autowired private RedisDataSource redisDataSource; public void disconnect() { ShardedJedis shardedJedis = redisDataSource.getRedisClient(); shardedJedis.disconnect(); } /** * 设置单个值 * * @param key * @param value * @return */ public String set(String key, String value) { String result = null; ShardedJedis shardedJedis = redisDataSource.getRedisClient(); if (shardedJedis == null) { return result; } boolean broken = false; try { result = shardedJedis.set(key, value); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(shardedJedis, broken); } return result; } /** * 获取单个值 * * @param key * @return */ public String get(String key) { String result = null; ShardedJedis shardedJedis = redisDataSource.getRedisClient(); if (shardedJedis == null) { return result; } boolean broken = false; try { result = shardedJedis.get(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(shardedJedis, broken); } return result; } public Boolean exists(String key) { Boolean result = false; ShardedJedis shardedJedis = redisDataSource.getRedisClient(); if (shardedJedis == null) { return result; } boolean broken = false; try { result = shardedJedis.exists(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(shardedJedis, broken); } return result; } public String type(String key) { String result = null; ShardedJedis shardedJedis = redisDataSource.getRedisClient(); if (shardedJedis == null) { return result; } boolean broken = false; try { result = shardedJedis.type(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(shardedJedis, broken); } return result; } /** * 在某段时间后失效 * * @param key * @param seconds * @return */ public Long expire(String key, int seconds) { Long result = null; ShardedJedis shardedJedis = redisDataSource.getRedisClient(); if (shardedJedis == null) { return result; } boolean broken = false; try { result = shardedJedis.expire(key, seconds); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(shardedJedis, broken); } return result; } /** * 在某个时间点失效 * * @param key * @param unixTime * @return */ public Long expireAt(String key, long unixTime) { Long result = null; ShardedJedis shardedJedis = redisDataSource.getRedisClient(); if (shardedJedis == null) { return result; } boolean broken = false; try { result = shardedJedis.expireAt(key, unixTime); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(shardedJedis, broken); } return result; } public Long ttl(String key) { Long result = null; ShardedJedis shardedJedis = redisDataSource.getRedisClient(); if (shardedJedis == null) { return result; } boolean broken = false; try { result = shardedJedis.ttl(key); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(shardedJedis, broken); } return result; } public boolean setbit(String key, long offset, boolean value) { ShardedJedis shardedJedis = redisDataSource.getRedisClient(); boolean result = false; if (shardedJedis == null) { return result; } boolean broken = false; try { result = shardedJedis.setbit(key, offset, value); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(shardedJedis, broken); } return result; } public boolean getbit(String key, long offset) { ShardedJedis shardedJedis = redisDataSource.getRedisClient(); boolean result = false; if (shardedJedis == null) { return result; } boolean broken = false; try { result = shardedJedis.getbit(key, offset); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(shardedJedis, broken); } return result; } public long setRange(String key, long offset, String value) { ShardedJedis shardedJedis = redisDataSource.getRedisClient(); long result = 0; if (shardedJedis == null) { return result; } boolean broken = false; try { result = shardedJedis.setrange(key, offset, value); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(shardedJedis, broken); } return result; } public String getRange(String key, long startOffset, long endOffset) { ShardedJedis shardedJedis = redisDataSource.getRedisClient(); String result = null; if (shardedJedis == null) { return result; } boolean broken = false; try { result = shardedJedis.getrange(key, startOffset, endOffset); } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(shardedJedis, broken); } return result; } public boolean del(String key){ boolean result = false; ShardedJedis shardedJedis = redisDataSource.getRedisClient(); if (shardedJedis == null) { return result; } boolean broken = false; try { shardedJedis.del(key); result =true; } catch (Exception e) { log.error(e.getMessage(), e); broken = true; } finally { redisDataSource.returnResource(shardedJedis, broken); } return result; } }
到此redis的配置就已经完成了。
下面写个简单类来测试一下:
package com.btc.controller.pcweb; import javax.annotation.Resource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import com.btc.reids.RedisClient; import com.btc.service.manage.HelloService; import redis.clients.jedis.ShardedJedis; import redis.clients.jedis.ShardedJedisPool; @Controller public class helloTest { @Autowired private RedisClient redisClient; @RequestMapping(value = "/demo_set",method = RequestMethod.GET) @ResponseBody public String demo_set(String key,String value){ //存入键值对 redisClient.set(key,value); return "set"; } @RequestMapping(value = "/demo_get",method = RequestMethod.GET) @ResponseBody public String demo_get(String key){ //根据键值获得数据 String result = redisClient.get(key); return result; } }
以上是关于redis简单配置的主要内容,如果未能解决你的问题,请参考以下文章
在linux安装redis单机和集群后,如何在windows上使用redis客户端或者java代码访问错误的原因很简单,就是没有连接上redis服务,由于redis采用的安全策略,默认会只准许本地访问