yangyoupeng

DataSet添加了pipeline的List的支持

package com.zhaoonline.redis.repository;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Set;
......@@ -58,6 +59,20 @@ public class DataSetRepository<V> {
return setOper.add(values);
}
public void setWithPipeLine(String key,List<V> values){
byte[] keyBytes=redisTemplate.getStringSerializer().serialize(key);
Object[] array=new Object[values.size()];
values.toArray(array);
byte[][] valueBytes=deSerializer.rawValues(array);
redisTemplate.executePipelined(new RedisCallback<Long>() {
@Override
public Long doInRedis(RedisConnection connection) throws DataAccessException {
return connection.sAdd(keyBytes, valueBytes);
}
});
}
public void setWithPipeLine(String key,V... values){
byte[] keyBytes=redisTemplate.getStringSerializer().serialize(key);
......
......@@ -2,13 +2,16 @@ package com.zhaoonline.redis.repository;
import static org.hamcrest.MatcherAssert.assertThat;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import org.hamcrest.core.Is;
import org.hamcrest.core.IsEqual;
import org.junit.Assert;
import org.junit.Test;
public class TestDateSetRepository extends RepositoryCommonBase {
private static final String testNameSpace="data:repo:settest1";
private static final String testNameSpace2="data:repo:settest2";
......@@ -143,4 +146,23 @@ public class TestDateSetRepository extends RepositoryCommonBase {
// }
@Test
public void testsetWithPipeLine(){
DataSetRepository<User> userRepositroy=new DataSetRepository<User>(factory);
userRepositroy.delete("test:set:product");
List<User> users=new ArrayList<User>();
for(int i=0;i<1000;i++){
User user = new User();
user.setId(i);
user.setName("product"+i);
users.add(user);
}
userRepositroy.setWithPipeLine("test:set:product",users);
Set<User> userSet=userRepositroy.getAll("test:set:product");
Assert.assertEquals(1000, userSet.size());
}
}
......