redis spring的使用

来源:互联网 发布:软件需求调研报告 编辑:程序博客网 时间:2024/05/18 00:46

spring的redis配置使用:

1.首先加上maven的包:

<!-- redis支持 -->        <dependency>            <groupId>redis.clients</groupId>            <artifactId>jedis</artifactId>            <version>2.1.0</version>        </dependency>        <dependency>            <groupId>org.springframework.data</groupId>            <artifactId>spring-data-redis</artifactId>            <version>1.1.0.RELEASE</version>        </dependency><!-- redis支持 -->

2.redis.properties

# Redis settings  #sentinel1 没用到的放心im.hs.server.redis.sentinel1.host=127.0.0.1im.hs.server.redis.sentinel1.port=26379#sentinel2 没用到的放心im.hs.server.redis.sentinel2.host=127.0.0.1im.hs.server.redis.sentinel2.port=36379 #server配置im.hs.server.redis.sentinel.masterName=mymasterim.hs.server.redis.sentinel.password=redispass#配置im.hs.server.redis.host=127.0.0.1im.hs.server.redis.pass=redispass im.hs.server.redis.port=6379im.hs.server.redis.default.db=0im.hs.server.redis.timeout=100000im.hs.server.redis.maxIdle=500  im.hs.server.redis.maxTotal=5000  im.hs.server.redis.maxWaitTime=1000  # false 的话有些source获取失败im.hs.server.redis.testOnBorrow=false  im.hs.server.redis.minIdle=300

3.redis.xml spring配置文件

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"    xmlns:aop="http://www.springframework.org/schema/aop"     xmlns:tx="http://www.springframework.org/schema/tx"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xmlns:util="http://www.springframework.org/schema/util"    xmlns:context="http://www.springframework.org/schema/context"    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd     http://www.springframework.org/schema/tx  http://www.springframework.org/schema/tx/spring-tx-3.0.xsd     http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd    http://www.springframework.org/schema/context    http://www.springframework.org/schema/context/spring-context-3.0.xsd">    <!-- 配置Jredis连接池 -->    <bean id="jedisPool" class="redis.clients.jedis.JedisPoolConfig">        <property name="maxActive" value="1000" />        <property name="maxIdle" value="50" />        <property name="maxWait" value="5000" />        <property name="testOnBorrow" value="false" />    </bean>    <bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">        <property name="hostName" value="${im.hs.server.redis.host}" />        <property name="port" value="${im.hs.server.redis.port}" />        <!-- <property name="password" value="${im.hs.server.redis.pass}" /> -->        <property name="poolConfig" ref="jedisPool" />    </bean>    <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">        <property name="connectionFactory" ref="jedisConnectionFactory"></property>    </bean>    <bean id="stringRedisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">        <property name="connectionFactory" ref="jedisConnectionFactory"></property>    </bean></beans>

4.RedisServiceImp.java

@Service("redisService")public class RedisServiceImpl implements RedisService {    private Logger logger = LoggerFactory.getLogger(RedisServiceImpl.class);      @Autowired    private StringRedisTemplate strRedisTemplate;    @Autowired      RedisTemplate<?, ?> redisTemplate;    //  线程池    private static final ThreadPoolExecutor executor = new ThreadPoolExecutor(            256, 256, 30L, TimeUnit.SECONDS,            new LinkedBlockingQueue<Runnable>(),            new BasicThreadFactory.Builder().daemon(true).namingPattern("redis-oper-%d").build(),            new ThreadPoolExecutor.CallerRunsPolicy());    /**     * (非 Javadoc)      * <p>Title: set</p>      * <p>Description: </p>      * @param key     * @param value      * @see com.souche.scashier.service.redis.RedisService#set(java.lang.String, java.lang.String)     */    public void set(final String key, final String value) {          redisTemplate.execute(new RedisCallback<Object>() {              @Override              public Object doInRedis(RedisConnection connection)                      throws DataAccessException {                  connection.set(                          redisTemplate.getStringSerializer().serialize(key),                          redisTemplate.getStringSerializer().serialize(value));                  logger.debug("save key:" + key + ",value:" + value);                  return null;              }         });    }    /**     * (非 Javadoc)      * <p>Title: get</p>      * <p>Description: </p>      * @param key     * @return      * @see com.souche.scashier.service.redis.RedisService#get(java.lang.String)     */    public String get(final String key) {          return redisTemplate.execute(new RedisCallback<String>() {              @Override              public String doInRedis(RedisConnection connection)                      throws DataAccessException {                  byte[] byteKye = redisTemplate.getStringSerializer().serialize(                          key);                  if (connection.exists(byteKye)) {                      byte[] byteValue = connection.get(byteKye);                      String value = redisTemplate.getStringSerializer()                              .deserialize(byteValue);                      logger.debug("get key:" + key + ",value:" + value);                      return value;                  }                  logger.error("valus does not exist!,key:"+key);                  return null;              }          });      }      /**     * (非 Javadoc)      * <p>Title: delete</p>      * <p>Description: </p>      * @param key      * @see com.souche.scashier.service.redis.RedisService#delete(java.lang.String)     */    public void delete(final String key) {          redisTemplate.execute(new RedisCallback<Object>() {              public Object doInRedis(RedisConnection connection) {                  connection.del(redisTemplate.getStringSerializer().serialize(                          key));                  return null;              }          });      }      /**      * 线程池并发操作redis      *       * @param keyvalue      */      public void mulitThreadSaveAndFind(final String keyvalue) {          executor.execute(new Runnable() {              @Override              public void run() {                  try {                      set(keyvalue, keyvalue);                      get(keyvalue);                  } catch (Throwable th) {                      // 防御性容错,避免高并发下的一些问题                      logger.error("", th);                  }              }          });      }  }

5.junti test

@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = { "classpath*:beans/**/*.xml","classpath*:beans/*.xml","classpath:**/*.application*.xml" })public class RedisServiceTest {    @Autowired    private RedisService redisService;    public static String key = "zhong";    public static String value;    @Test    public void test() {        value = "nihao,zhuren";        redisService.set(key, value);        value = redisService.get(value);        System.out.println(value);    }}

// 运行结果:输出nihao,zhuren

// 看看redis是否写入
这里写图片描述
至此大功完成。

感谢朋友的博客:http://m.oschina.net/blog/497163

1 0
原创粉丝点击