- RedisTemplate
Redistemplate作为一个模版类,提供了很多快速使用redis的api,而不需要自己来维护连接,事务。
提供了一系列的operation,比如valueOperation,HashOperation,ListOperation,SetOperation等,用来操作不同数据类型的Redis。
下面通过RedisTemplate来使用connection操作Redis。
package cn.test.spjedis; import javax.annotation.Resource; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.data.redis.connection.RedisConnection; import org.springframework.data.redis.core.RedisCallback; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.ValueOperations; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import com.cn.redis2.dao.IncrDao; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "classpath:applicationContext.xml") public class TestRedis { @Resource(name = "redisTemplate") private RedisTemplate<String, String> template; // inject the template as ListOperations //至于这个为什么可以注入。需要参考AbstractBeanFactory doGetBean //super.setValue(((RedisOperations) value).opsForValue());就这一行代码 依靠一个editor @Resource(name = "redisTemplate") private ValueOperations<String, Object> vOps;
//使用模版类提交回调(RedisCallBack)的方法来使用jedis connection操作数据。
public void testSet(){ template.execute(new RedisCallback<Boolean>() { @Override public Boolean doInRedis(RedisConnection connection) throws DataAccessException { byte [] key = "tempkey".getBytes(); byte[] value = "tempvalue".getBytes(); connection.set(key, value); return true; } }); }
//使用模板类提供的operation来操作redis public void testSet1(){ vOps.set("tempkey", "tempvalue"); } @Autowired private IncrDao incr; @Test public void addLink() { System.out.println(incr.incr(13)); System.out.println(incr.get(13)); } }