@Override
public List<model> getStandardDtlList() throws ManagerException{
modellookupDtl = new model();
Map<String, Object> params = new HashMap<String, Object>();
params.put("status", 0);
try{
List<TmsStandardDtl> listDtls = tmsStandardDtlService.findByBiz(
lookupDtl, params);
Set<String> keys=redisTemplate.keys(CACHE_KEY+"*");
List<String> str=new ArrayList();
for (TmsStandardDtl vo : listDtls) {
str.add(CACHE_KEY+vo.getLookupcode());
}
redisTemplate.delete(str);//删除KEY
if (CommonUtil.hasValue(listDtls)) {
for (TmsStandardDtl vo : listDtls) {
BoundListOperations<String, List<TmsStandardDtl>>ops=redisTemplate.boundListOps(CACHE_KEY+vo.getLookupcode());
List modules=ops.range(0,ops.size());//取得值
if (modules.size()!=0) {
List rolesList=ops.range(0,ops.size());
//List<TmsStandardDtl> tempList = SystemCache.standarDtldMap.get(vo.getLookupcode());
rolesList.add(vo);
ops.rightPush(rolesList);
} else {
List<TmsStandardDtl> tempList = new LinkedList<TmsStandardDtl>();
TmsStandardDtl tmp = new TmsStandardDtl();
tmp.setItemname("--请选择--");
tmp.setItemvalue("");
tempList.add(tmp);
tempList.add(vo);
ops.rightPush(tempList);
//SystemCache.standarDtldMap.put(vo.getLookupcode(), tempList);
}
}
}
public List<model> getStandardDtlList() throws ManagerException{
modellookupDtl = new model();
Map<String, Object> params = new HashMap<String, Object>();
params.put("status", 0);
try{
List<TmsStandardDtl> listDtls = tmsStandardDtlService.findByBiz(
lookupDtl, params);
Set<String> keys=redisTemplate.keys(CACHE_KEY+"*");
List<String> str=new ArrayList();
for (TmsStandardDtl vo : listDtls) {
str.add(CACHE_KEY+vo.getLookupcode());
}
redisTemplate.delete(str);//删除KEY
if (CommonUtil.hasValue(listDtls)) {
for (TmsStandardDtl vo : listDtls) {
BoundListOperations<String, List<TmsStandardDtl>>ops=redisTemplate.boundListOps(CACHE_KEY+vo.getLookupcode());
List modules=ops.range(0,ops.size());//取得值
if (modules.size()!=0) {
List rolesList=ops.range(0,ops.size());
//List<TmsStandardDtl> tempList = SystemCache.standarDtldMap.get(vo.getLookupcode());
rolesList.add(vo);
ops.rightPush(rolesList);
} else {
List<TmsStandardDtl> tempList = new LinkedList<TmsStandardDtl>();
TmsStandardDtl tmp = new TmsStandardDtl();
tmp.setItemname("--请选择--");
tmp.setItemvalue("");
tempList.add(tmp);
tempList.add(vo);
ops.rightPush(tempList);
//SystemCache.standarDtldMap.put(vo.getLookupcode(), tempList);
}
}
}
相关链接:
征服 Redis + Jedis + Spring (一)—— 配置&常规操作(GET SET DEL)
pom构建:
- <modelVersion>4.0.0</modelVersion>
- <groupId>com.x.redis</groupId>
- <artifactId>springredis</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <dependencies>
- <dependency>
- <groupId>org.springframework.data</groupId>
- <artifactId>spring-data-redis</artifactId>
- <version>1.0.2.RELEASE</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-test</artifactId>
- <version>3.1.2.RELEASE</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>redis.clients</groupId>
- <artifactId>jedis</artifactId>
- <version>2.1.0</version>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.8.2</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
spring配置文件(applicationContext.xml):
- <?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"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-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/jdbc
http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<context:component-scan base-package="com.zlh.dao"/>
<!-- 加载数据源配置文件 -->
<bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<!-- 标准配置 -->
<value>classpath:/jdbc.properties</value>
<value>classpath:/redis-config.properties</value>
</list>
</property>
</bean>
<context:property-placeholder location="classpath:redis-config.properties" ignore-unresolvable="true" ignore-resource-not-found="true" />
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxActive" value="${redis.conf.maxActive}" />
<property name="maxIdle" value="100" />
<property name="maxWait" value="10000" />
<property name="testOnBorrow" value="false" />
</bean>
<bean id="jedisConnectionFactory"
class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
p:use-pool="true" p:host-name="192.168.234.130" p:port="6379"
p:pool-config-ref="jedisPoolConfig" />
<!-- redis template definition -->
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"
p:connection-factory-ref="jedisConnectionFactory" />
</beans>
-
- # Redis settings
- redis.host=localhost
- redis.port=6379
- redis.pass=java2000_wl
- redis.maxIdle=300
- redis.maxActive=600
- redis.maxWait=1000
- redis.testOnBorrow=true
java代码:
- package com.x.entity;
- import java.io.Serializable;
- /**
- * @author http://blog.csdn.net/java2000_wl
- * @version <b>1.0</b>
- */
- public class User implements Serializable {
- private static final long serialVersionUID = -6011241820070393952L;
- private String id;
- private String name;
- private String password;
- /**
- * <br>------------------------------<br>
- */
- public User() {
- }
- /**
- * <br>------------------------------<br>
- */
- public User(String id, String name, String password) {
- super();
- this.id = id;
- this.name = name;
- this.password = password;
- }
- /**
- * 获得id
- * @return the id
- */
- public String getId() {
- return id;
- }
- /**
- * 设置id
- * @param id the id to set
- */
- public void setId(String id) {
- this.id = id;
- }
- /**
- * 获得name
- * @return the name
- */
- public String getName() {
- return name;
- }
- /**
- * 设置name
- * @param name the name to set
- */
- public void setName(String name) {
- this.name = name;
- }
- /**
- * 获得password
- * @return the password
- */
- public String getPassword() {
- return password;
- }
- /**
- * 设置password
- * @param password the password to set
- */
- public void setPassword(String password) {
- this.password = password;
- }
- }
- package com.x.dao;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.data.redis.core.RedisTemplate;
- import org.springframework.data.redis.serializer.RedisSerializer;
- /**
- * AbstractBaseRedisDao
- * @author http://blog.csdn.net/java2000_wl
- * @version <b>1.0</b>
- */
- public abstract class AbstractBaseRedisDao<K, V> {
- @Autowired
- protected RedisTemplate<K, V> redisTemplate;
- /**
- * 设置redisTemplate
- * @param redisTemplate the redisTemplate to set
- */
- public void setRedisTemplate(RedisTemplate<K, V> redisTemplate) {
- this.redisTemplate = redisTemplate;
- }
- /**
- * 获取 RedisSerializer
- * <br>------------------------------<br>
- */
- protected RedisSerializer<String> getRedisSerializer() {
- return redisTemplate.getStringSerializer();
- }
- }
- package com.x.dao;
- import java.util.List;
- import com.x.entity.User;
- /**
- * @author http://blog.csdn.net/java2000_wl
- * @version <b>1.0</b>
- */
- public interface IUserDao {
- /**
- * 新增
- * <br>------------------------------<br>
- * @param user
- * @return
- */
- boolean add(User user);
- /**
- * 批量新增 使用pipeline方式
- * <br>------------------------------<br>
- * @param list
- * @return
- */
- boolean add(List<User> list);
- /**
- * 删除
- * <br>------------------------------<br>
- * @param key
- */
- void delete(String key);
- /**
- * 删除多个
- * <br>------------------------------<br>
- * @param keys
- */
- void delete(List<String> keys);
- /**
- * 修改
- * <br>------------------------------<br>
- * @param user
- * @return
- */
- boolean update(User user);
- /**
- * 通过key获取
- * <br>------------------------------<br>
- * @param keyId
- * @return
- */
- User get(String keyId);
- }
- package com.x.dao.impl;
- import java.util.ArrayList;
- import java.util.List;
- import org.springframework.dao.DataAccessException;
- import org.springframework.data.redis.connection.RedisConnection;
- import org.springframework.data.redis.core.RedisCallback;
- import org.springframework.data.redis.serializer.RedisSerializer;
- import org.springframework.util.Assert;
- import com.x.dao.AbstractBaseRedisDao;
- import com.x.dao.IUserDao;
- import com.x.entity.User;
- /**
- * Dao
- * @author http://blog.csdn.net/java2000_wl
- * @version <b>1.0</b>
- */
- @Service
- public class UserDao extends AbstractBaseRedisDao<String, User> implements IUserDao {
- /**
- * 新增
- *<br>------------------------------<br>
- * @param user
- * @return
- */
- public boolean add(final User user) {
- boolean result = redisTemplate.execute(new RedisCallback<Boolean>() {
- public Boolean doInRedis(RedisConnection connection)
- throws DataAccessException {
- RedisSerializer<String> serializer = getRedisSerializer();
- byte[] key = serializer.serialize(user.getId());
- byte[] name = serializer.serialize(user.getName());
- return connection.setNX(key, name);
- }
- });
- return result;
- }
- /**
- * 批量新增 使用pipeline方式
- *<br>------------------------------<br>
- *@param list
- *@return
- */
- public boolean add(final List<User> list) {
- Assert.notEmpty(list);
- boolean result = redisTemplate.execute(new RedisCallback<Boolean>() {
- public Boolean doInRedis(RedisConnection connection)
- throws DataAccessException {
- RedisSerializer<String> serializer = getRedisSerializer();
- for (User user : list) {
- byte[] key = serializer.serialize(user.getId());
- byte[] name = serializer.serialize(user.getName());
- connection.setNX(key, name);
- }
- return true;
- }
- }, false, true);
- return result;
- }
- /**
- * 删除
- * <br>------------------------------<br>
- * @param key
- */
- public void delete(String key) {
- List<String> list = new ArrayList<String>();
- list.add(key);
- delete(list);
- }
- /**
- * 删除多个
- * <br>------------------------------<br>
- * @param keys
- */
- public void delete(List<String> keys) {
- redisTemplate.delete(keys);
- }
- /**
- * 修改
- * <br>------------------------------<br>
- * @param user
- * @return
- */
- public boolean update(final User user) {
- String key = user.getId();
- if (get(key) == null) {
- throw new NullPointerException("数据行不存在, key = " + key);
- }
- boolean result = redisTemplate.execute(new RedisCallback<Boolean>() {
- public Boolean doInRedis(RedisConnection connection)
- throws DataAccessException {
- RedisSerializer<String> serializer = getRedisSerializer();
- byte[] key = serializer.serialize(user.getId());
- byte[] name = serializer.serialize(user.getName());
- connection.set(key, name);
- return true;
- }
- });
- return result;
- }
- /**
- * 通过key获取
- * <br>------------------------------<br>
- * @param keyId
- * @return
- */
- public User get(final String keyId) {
- User result = redisTemplate.execute(new RedisCallback<User>() {
- public User doInRedis(RedisConnection connection)
- throws DataAccessException {
- RedisSerializer<String> serializer = getRedisSerializer();
- byte[] key = serializer.serialize(keyId);
- byte[] value = connection.get(key);
- if (value == null) {
- return null;
- }
- String name = serializer.deserialize(value);
- return new User(keyId, name, null);
- }
- });
- return result;
- }
- }
- import java.util.ArrayList;
- import java.util.List;
- import junit.framework.Assert;
- import org.junit.Test;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.test.context.ContextConfiguration;
- import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
- import com.x.dao.IUserDao;
- import com.x.entity.User;
- /**
- * 测试
- * @author http://blog.csdn.net/java2000_wl
- * @version <b>1.0</b>
- */
- @ContextConfiguration(locations = {"classpath*:applicationContext.xml"})
- public class RedisTest extends AbstractJUnit4SpringContextTests {
-
private ApplicationContext app;
@Autowired
private IUserDao userDao;
/**
* 设置userDao
* @param userDao the userDao to set
*/
public void setUserDao(IUserDao userDao) {
this.userDao = userDao;
}
@Before
public void before() throws Exception {
app = new ClassPathXmlApplicationContext("redis.xml");
userDao = (IUserDao) app.getBean("userDaoImpl");
} -
- /**
- * 新增
- * <br>------------------------------<br>
- */
- @Test
- public void testAddUser() {
- User user = new User();
- user.setId("user1");
- user.setName("java2000_wl");
- boolean result = userDao.add(user);
- Assert.assertTrue(result);
- }
- /**
- * 批量新增 普通方式
- * <br>------------------------------<br>
- */
- @Test
- public void testAddUsers1() {
- List<User> list = new ArrayList<User>();
- for (int i = 10; i < 50000; i++) {
- User user = new User();
- user.setId("user" + i);
- user.setName("java2000_wl" + i);
- list.add(user);
- }
- long begin = System.currentTimeMillis();
- for (User user : list) {
- userDao.add(user);
- }
- System.out.println(System.currentTimeMillis() - begin);
- }
- /**
- * 批量新增 pipeline方式
- * <br>------------------------------<br>
- */
- @Test
- public void testAddUsers2() {
- List<User> list = new ArrayList<User>();
- for (int i = 10; i < 1500000; i++) {
- User user = new User();
- user.setId("user" + i);
- user.setName("java2000_wl" + i);
- list.add(user);
- }
- long begin = System.currentTimeMillis();
- boolean result = userDao.add(list);
- System.out.println(System.currentTimeMillis() - begin);
- Assert.assertTrue(result);
- }
- /**
- * 修改
- * <br>------------------------------<br>
- */
- @Test
- public void testUpdate() {
- User user = new User();
- user.setId("user1");
- user.setName("new_password");
- boolean result = userDao.update(user);
- Assert.assertTrue(result);
- }
- /**
- * 通过key删除单个
- * <br>------------------------------<br>
- */
- @Test
- public void testDelete() {
- String key = "user1";
- userDao.delete(key);
- }
- /**
- * 批量删除
- * <br>------------------------------<br>
- */
- @Test
- public void testDeletes() {
- List<String> list = new ArrayList<String>();
- for (int i = 0; i < 10; i++) {
- list.add("user" + i);
- }
- userDao.delete(list);
- }
- /**
- * 获取
- * <br>------------------------------<br>
- */
- @Test
- public void testGetUser() {
- String id = "user1";
- User user = userDao.get(id);
- Assert.assertNotNull(user);
- Assert.assertEquals(user.getName(), "java2000_wl");
- }
- /**
- * 设置userDao
- * @param userDao the userDao to set
- */
- public void setUserDao(IUserDao userDao) {
- this.userDao = userDao;
- }
- }
- import org.junit.After;
- import org.junit.Before;
- import org.junit.Test;
- import redis.clients.jedis.Jedis;
- import redis.clients.jedis.JedisPool;
- import redis.clients.jedis.JedisPoolConfig;
- import javax.sound.midi.Soundbank;
- import java.util.*;
- /**
- * @author: flychao88
- * Time: 2012.5.7 16:23:15
- */
- public class RedisTest {
- JedisPool pool;
- Jedis jedis;
- @Before
- public void setUp() {
- pool = new JedisPool(new JedisPoolConfig(), "172.16.100.184");
- jedis = pool.getResource();
- jedis.auth("password");
- }
- /**
- * Redis存储初级的字符串
- * CRUD
- */
- @Test
- public void testBasicString(){
- //-----添加数据----------
- jedis.set("name","minxr");//向key-->name中放入了value-->minxr
- System.out.println(jedis.get("name"));//执行结果:minxr
- //-----修改数据-----------
- //1、在原来基础上修改
- jedis.append("name","jarorwar"); //很直观,类似map 将jarorwar append到已经有的value之后
- System.out.println(jedis.get("name"));//执行结果:minxrjarorwar
- //2、直接覆盖原来的数据
- jedis.set("name","闵晓荣");
- System.out.println(jedis.get("name"));//执行结果:闵晓荣
- //删除key对应的记录
- jedis.del("name");
- System.out.println(jedis.get("name"));//执行结果:null
- /**
- * mset相当于
- * jedis.set("name","minxr");
- * jedis.set("jarorwar","闵晓荣");
- */
- jedis.mset("name","minxr","jarorwar","闵晓荣");
- System.out.println(jedis.mget("name","jarorwar"));
- }
- /**
- * jedis操作Map
- */
- @Test
- public void testMap(){
- Map<String,String> user=new HashMap<String,String>();
- user.put("name","minxr");
- user.put("pwd","password");
- jedis.hmset("user",user);
- //取出user中的name,执行结果:[minxr]-->注意结果是一个泛型的List
- //第一个参数是存入redis中map对象的key,后面跟的是放入map中的对象的key,后面的key可以跟多个,是可变参数
- List<String> rsmap = jedis.hmget("user", "name");
- System.out.println(rsmap);
- //删除map中的某个键值
- // jedis.hdel("user","pwd");
- System.out.println(jedis.hmget("user", "pwd")); //因为删除了,所以返回的是null
- System.out.println(jedis.hlen("user")); //返回key为user的键中存放的值的个数1
- System.out.println(jedis.exists("user"));//是否存在key为user的记录 返回true
- System.out.println(jedis.hkeys("user"));//返回map对象中的所有key [pwd, name]
- System.out.println(jedis.hvals("user"));//返回map对象中的所有value [minxr, password]
- Iterator<String> iter=jedis.hkeys("user").iterator();
- while (iter.hasNext()){
- String key = iter.next();
- System.out.println(key+":"+jedis.hmget("user",key));
- }
- }
- /**
- * jedis操作List
- */
- @Test
- public void testList(){
- //开始前,先移除所有的内容
- jedis.del("java framework");
- System.out.println(jedis.lrange("java framework",0,-1));
- //先向key java framework中存放三条数据
- jedis.lpush("java framework","spring");
- jedis.lpush("java framework","struts");
- jedis.lpush("java framework","hibernate");
- //再取出所有数据jedis.lrange是按范围取出,
- // 第一个是key,第二个是起始位置,第三个是结束位置,jedis.llen获取长度 -1表示取得所有
- System.out.println(jedis.lrange("java framework",0,-1));
- }
- /**
- * jedis操作Set
- */
- @Test
- public void testSet(){
- //添加
- jedis.sadd("sname","minxr");
- jedis.sadd("sname","jarorwar");
- jedis.sadd("sname","闵晓荣");
- jedis.sadd("sanme","noname");
- //移除noname
- jedis.srem("sname","noname");
- System.out.println(jedis.smembers("sname"));//获取所有加入的value
- System.out.println(jedis.sismember("sname", "minxr"));//判断 minxr 是否是sname集合的元素
- System.out.println(jedis.srandmember("sname"));
- System.out.println(jedis.scard("sname"));//返回集合的元素个数
- }
- @Test
- public void test() throws InterruptedException {
- //keys中传入的可以用通配符
- System.out.println(jedis.keys("*")); //返回当前库中所有的key [sose, sanme, name, jarorwar, foo, sname, java framework, user, braand]
- System.out.println(jedis.keys("*name"));//返回的sname [sname, name]
- System.out.println(jedis.del("sanmdde"));//删除key为sanmdde的对象 删除成功返回1 删除失败(或者不存在)返回 0
- System.out.println(jedis.ttl("sname"));//返回给定key的有效时间,如果是-1则表示永远有效
- jedis.setex("timekey", 10, "min");//通过此方法,可以指定key的存活(有效时间) 时间为秒
- Thread.sleep(5000);//睡眠5秒后,剩余时间将为<=5
- System.out.println(jedis.ttl("timekey")); //输出结果为5
- jedis.setex("timekey", 1, "min"); //设为1后,下面再看剩余时间就是1了
- System.out.println(jedis.ttl("timekey")); //输出结果为1
- System.out.println(jedis.exists("key"));//检查key是否存在
- System.out.println(jedis.rename("timekey","time"));
- System.out.println(jedis.get("timekey"));//因为移除,返回为null
- System.out.println(jedis.get("time")); //因为将timekey 重命名为time 所以可以取得值 min
- //jedis 排序
- //注意,此处的rpush和lpush是List的操作。是一个双向链表(但从表现来看的)
- jedis.del("a");//先清除数据,再加入数据进行测试
- jedis.rpush("a", "1");
- jedis.lpush("a","6");
- jedis.lpush("a","3");
- jedis.lpush("a","9");
- System.out.println(jedis.lrange("a",0,-1));// [9, 3, 6, 1]
- System.out.println(jedis.sort("a")); //[1, 3, 6, 9] //输入排序后结果
- System.out.println(jedis.lrange("a",0,-1));
- }