| 知乎专栏 |
SetOperations<String,String> ops = redisTemplate.opsForSet();
Redis的Set是无序集合并且集合成员是唯一的,这就意味着集合中不能出现重复的数据。
stringRedisTemplate.opsForSet().add("test", "1","2","3"); //向指定key中存放set集合
stringRedisTemplate.opsForSet().isMember("test", "1") //根据key查看集合中是否存在指定数据
stringRedisTemplate.opsForSet().members("test"); //根据key获取set集合
//添加 一个 set 集合
SetOperations<String, Object> set = redisTemplate.opsForSet();
set.add("Member", "neo");
set.add("Member", "36");
set.add("Member", "178cm");
//输出 set 集合
System.out.println(set.members("Member"));
package cn.netkiller.api.restful;
import java.util.Set;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import common.pojo.ResponseRestful;
@RestController
@RequestMapping("/news")
public class NewsRestController {
@Autowired
private RedisTemplate<String, String> redisTemplate;
@RequestMapping(value = "/flash/{count}")
public ResponseRestful flash(@PathVariable("count") long count) {
if(count == 0L) {
count=10L;
}
Set<String> news = this.redisTemplate.opsForZSet().reverseRange("news:flash", 0, count);
if (news == null) {
return new ResponseRestful(false, 10, "没有查询到结果", news);
}
return new ResponseRestful(true, 0, "返回数据: " + news.size() + " 条", news);
}
public void addRecentUser(long userId, String name) {
String key = RedisKeyGenerator.genRecentBrowsingPositionsKey(String.valueOf(userId));
// 获取已缓存的最近浏览的职位
ZSetOperations<String, String> zSetOperations = redisTempalte.opsForZSet();
//zset内部是按分数来排序的,这里用当前时间做分数
zSetOperations.add(key, name, System.currentTimeMillis());
zSetOperations.removeRange(key, 0, -6);
}
}
System.out.println("Random member: " + redisTemplate.opsForSet().randomMember("setTest"));
System.out.println("Random member: " + redisTemplate.opsForSet().randomMembers("setTest",5));
// 结果 Random member: [ccc, ddd, ddd, ddd, aaa]
System.out.println("Random members: " + redisTemplate.opsForSet().distinctRandomMembers("setTest",5));
//结果 Random members: [aaa, bbb, ddd, ccc]
redisTemplate.opsForSet().move("key1","aaa","key2");
System.out.println(redisTemplate.opsForSet().members("key1"));
System.out.println(redisTemplate.opsForSet().members("key2"));
String[] arrays = new String[]{"Java","PHP"};
System.out.println(redisTemplate.opsForSet().remove("setTest",arrays));
System.out.println(redisTemplate.opsForSet().members("key"));
System.out.println(redisTemplate.opsForSet().members("otherKey"));
System.out.println(redisTemplate.opsForSet().intersect("key","otherKey"));
List<String> library2 = new ArrayList<String>();
library2.add("Linux");
library2.add("FreeBSD");
System.out.println(redisTemplate.opsForSet().intersect("library1",library2));
System.out.println(redisTemplate.opsForSet().intersectAndStore("key","otherKey","destKey"));
List<String> otherKey = new ArrayList<String>();
otherKey.add("《Netkiller Java 手札》");
otherKey.add("《Netkiller Spring Cloud 手札》");
System.out.println(redisTemplate.opsForSet().intersectAndStore("key",otherKey,"destKey"));
System.out.println(redisTemplate.opsForSet().union("setTest1","setTest2"));
List<String> otherKey = new ArrayList<String>();
otherKey.add("《Netkiller Java 手札》");
otherKey.add("《Netkiller Spring Cloud 手札》");
System.out.println(redisTemplate.opsForSet().union("setTest",otherKey));
System.out.println(redisTemplate.opsForSet().unionAndStore("key","otherKey","destKey"));
System.out.println(redisTemplate.opsForSet().unionAndStore("key",otherKey,"destKey"));
System.out.println(redisTemplate.opsForSet().difference("key","otherKey"));
List<String> otherKey = new ArrayList<String>();
otherKey.add("setTest2");
otherKey.add("setTest3");
System.out.println(redisTemplate.opsForSet().difference("key",otherKey));
System.out.println(redisTemplate.opsForSet().differenceAndStore("key","otherKey","destKey"));