SpringBoot整合Redis
Pom依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.62</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.11.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.11.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.9.9</version>
</dependency>
RedisConfig
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
GenericJackson2JsonRedisSerializer jsonRedisSerializer = new GenericJackson2JsonRedisSerializer();
redisTemplate.setKeySerializer(RedisSerializer.string());
redisTemplate.setHashKeySerializer(RedisSerializer.string());
redisTemplate.setValueSerializer(jsonRedisSerializer);
redisTemplate.setHashValueSerializer(jsonRedisSerializer);
return redisTemplate;
}
}
application.yaml
spring:
application:
name: common-demo
redis:
host: 127.0.0.1
port: 6379
lettuce:
pool:
max-active: 8
max-idle: 8
max-wait: 100
RedisUtil
@Component
@SuppressWarnings(value = "all")
public class RedisUtil {
@Resource
RedisTemplate redisTemplate;
private static final String separator = ":";
public static <K> String generateKey(String prefix, K key) {
return prefix + separator + key;
}
public static <K> String generateKey(K key) {
return key.toString();
}
public static <K> String[] generateKeys(String prefix, K... keys) {
String[] strings = Arrays.stream(keys).map(e -> {
return prefix + separator + e;
}).toArray(new IntFunction<String[]>() {
@Override
public String[] apply(int value) {
return new String[keys.length];
}
});
return strings;
}
public static <K> String[] generateKeys(K... keys) {
String[] strings = Arrays.stream(keys).map(e->{ return e.toString();}).toArray(new IntFunction<String[]>() {
@Override
public String[] apply(int value) {
return new String[keys.length];
}
});
return strings;
}
public <K, V> ValueOperations<K, V> operateString() {
return redisTemplate.opsForValue();
}
public <H, K, V> HashOperations<H, K, V> operateHash() {
return redisTemplate.opsForHash();
}
public <K, V> ListOperations<K, V> operateList() {
return redisTemplate.opsForList();
}
public <K, V> SetOperations<K, V> operateSet() {
return redisTemplate.opsForSet();
}
public <K, V> ZSetOperations<K, V> operateSortSet() {
return redisTemplate.opsForZSet();
}
public <K, M> GeoOperations operateGeo() {
return redisTemplate.opsForGeo();
}
public <K, V> ClusterOperations operateCluster() {
return redisTemplate.opsForCluster();
}
public <K, V> HyperLogLogOperations operateHyperLogLog() {
return redisTemplate.opsForHyperLogLog();
}
public <HK, HV> StreamOperations operateStream() {
return redisTemplate.opsForStream();
}
public <K> boolean expire(K key, Long timeout, TimeUnit timeUnit) {
return redisTemplate.expire(key, timeout, timeUnit);
}
public <K> boolean expire(K key, Duration duration) {
return redisTemplate.expire(key, duration);
}
public <K> boolean expiredAt(K key, Date date) {
return redisTemplate.expireAt(key, date);
}
public <K> boolean expiredAt(K key, Instant instant) {
return redisTemplate.expireAt(key, instant);
}
public <K> Long getExpire(K key) {
return redisTemplate.getExpire(key);
}
public <K> Long getExpired(K key, TimeUnit timeUnit) {
return redisTemplate.getExpire(key, timeUnit);
}
public <K> boolean hasKey(K key) {
return redisTemplate.hasKey(key);
}
public <K> boolean delKey(K key) {
return redisTemplate.delete(key);
}
public <K> Long delKeys(Collection<K> keys) {
return redisTemplate.delete(keys);
}
public <K, V> void setString(K key, V value) {
this.operateString().set(key, value);
}
public <K, V> void setStringWithExpired(K key, V value, Long timeout, TimeUnit timeUnit) {
if (timeUnit != null) {
this.operateString().set(key, value, timeout, timeUnit);
return;
} else {
this.operateString().set(key, value, timeout, TimeUnit.SECONDS);
}
}
public <K, V> void setStringWithExpiredDuration(K key, V value, Duration duration) {
this.operateString().set(key, value, duration);
}
public <K, V> boolean setStringIfAbsent(K key, V value) {
return this.operateString().setIfAbsent(key, value);
}
public <K, V> boolean setStringWithExpiredIfAbsent(K key, V value, Long timeout, TimeUnit timeUnit) {
if (timeUnit != null) {
return this.operateString().setIfAbsent(key, value, timeout, timeUnit);
} else {
return this.operateString().setIfAbsent(key, value, timeout, TimeUnit.SECONDS);
}
}
public <K, V> boolean setStringWithExpiredDurationIfAbsent(K key, V value, Duration duration) {
return this.operateString().setIfAbsent(key, value, duration == null ? Duration.ofSeconds(60) : duration);
}
public <K> Object getString(K key) {
return this.operateString().get(key);
}
public <H, K, V> void pushHash(H hash, K hashKey, V value) {
this.operateHash().put(hash, hashKey, value);
}
public <H, K, V> void pushHashMap(H hash, Map<K, V> map) {
this.operateHash().putAll(hash, map);
}
public <H, K, V> boolean pushHashIfAbsent(H hash, K hashKey, V value) {
return this.operateHash().putIfAbsent(hash, hashKey, value);
}
public <H, K, V> void pushHashWithExpire(H hash, K hashKey, V value, Duration duration) {
try {
this.pushHash(hash, hashKey, value);
this.expire(hash, duration);
} catch (Exception e) {
e.printStackTrace();
}
}
public <H> Set<Object> getHashKeys(H hash) {
return this.operateHash().keys(hash);
}
public <H, K> boolean hashHashKey(H hash, K hashKey) {
return this.operateHash().hasKey(hash, hashKey);
}
public <H, K> Object getHash(H hash, K hashKey) {
return this.operateHash().get(hash, hashKey);
}
public <H> Map<Object, Object> getHashEntries(H hash) {
return this.operateHash().entries(hash);
}
public <K, V> Long leftPushList(K key, V value) {
return this.operateList().leftPush(key, value);
}
public <K> Object leftPopList(K key) {
return this.operateList().leftPop(key);
}
public <K, V> Long rightPushList(K key, V value) {
return this.operateList().rightPush(key, value);
}
public <K> Object rightPopList(K key) {
return this.operateList().rightPop(key);
}
public <K, V> void leftPushListAll(K key, V... values) {
this.operateList().leftPushAll(key, values);
}
public <K, V> void rightPushListAll(K key, V... values) {
this.operateList().rightPushAll(key, values);
}
public <K> Long listSize(K key) {
return this.operateList().size(key);
}
public <K> Object listIndex(K key, Long index) {
return this.operateList().index(key, index);
}
public <K> List<Object> listRange(K key, Long start, Long end) {
return this.operateList().range(key, start, end);
}
public <K> Long listRemove(K key, Object value, Long count) {
return this.operateList().remove(key, count, value);
}
public <K, V> void addSet(K key, V... values) {
this.operateSet().add(key, values);
}
public <K, V> void removeSet(K key, V... value) {
this.operateSet().remove(key, value);
}
public <K> Long SizeSet(K key) {
return this.operateSet().size(key);
}
public <K> boolean isMemberSet(K key, Object element) {
return this.operateSet().isMember(key, element);
}
public <K> boolean moveSet1To2(K key1, Object element, K key2) {
return this.operateSet().move(key1, element, key2);
}
public <K> Set<Object> getSetMembers(K key) {
return this.operateSet().members(key);
}
public <K> Object popSet(K key) {
return this.operateSet().pop(key);
}
public <K> List<Object> popSet(K key, Long number) {
return this.operateSet().pop(key, number);
}
public <K> Set<Object> unionSet(K key1, K key2) {
return this.operateSet().union(key1, key2);
}
public <K> Set<Object> intersectSet(K key1, K key2) {
return this.operateSet().intersect(key1, key2);
}
public <K> Set<Object> intersectSet(K key, Collection<Object> collection) {
return this.operateSet().intersect(key, collection);
}
public Set<Object> intersectSet(Collection<Object> collection) {
return this.operateSet().intersect(collection);
}
public <K> Set<Object> differenceSet(K key1, K key2) {
return this.operateSet().difference(key1, key2);
}
public <K> Set<Object> differenceSet(K key, Collection<Object> collection) {
return this.operateSet().difference(key, collection);
}
public Set<Object> differenceSet(Collection<Object> collection) {
return this.operateSet().difference(collection);
}
public <K> Long sortSetSize(K key) {
return this.operateSortSet().size(key);
}
public <K, V> Long sortSetRank(K key, V element) {
return this.operateSortSet().rank(key, element);
}
public <K> Long sortSetCount(K key, Double score1, Double score2) {
return this.operateSortSet().count(key, score1, score2);
}
public <K, V> Double sortSetScore(K key, V element) {
return this.operateSortSet().score(key, element);
}
public <K, V> void addSortSet(K key, V value, Double score) {
this.operateSortSet().add(key, value, score);
}
public <K> Long sortSetCard(K key) {
return this.operateSortSet().zCard(key);
}
public <K> Long addSortSet(K key, Set<ZSetOperations.TypedTuple<Object>> sets) {
return this.operateSortSet().add(key, sets);
}
public <K, V> Long removeSortSet(K key, V... values) {
return this.operateSortSet().remove(key, values);
}
public <K> Long removeSortSetRange(K key, Long l1, Long l2) {
return this.operateSortSet().removeRange(key, l1, l2);
}
public <K> Set<Object> sortSetRange(K key, Long l1, Long l2) {
return this.operateSortSet().range(key, l1, l2);
}
public <K> Set<Object> sortSetRangeByScore(K key, Double score1, Double score2) {
return this.operateSortSet().rangeByScore(key, score1, score2);
}
public <K> Set<Object> sortSetRangeByScore(K key, Double score1, Double score2, Long l1, Long l2) {
return this.operateSortSet().rangeByScore(key, score1, score2, l1, l2);
}
public <K> Set<ZSetOperations.TypedTuple<Object>> sortSetRangeByScoreWithScore(K key, Double score1, Double score2) {
return this.operateSortSet().rangeByScoreWithScores(key, score1, score2);
}
public <K> Set<ZSetOperations.TypedTuple<Object>> sortSetRangeByScoreWithScore(K key, Double score1, Double score2, Long l1, Long l2) {
return this.operateSortSet().reverseRangeByScoreWithScores(key, score1, score2, l1, l2);
}
public <K, V> Set<Object> sortSetRangeByLex(K key, RedisZSetCommands.Range range) {
return this.operateSortSet().rangeByLex(key, range);
}
public <K, V> Set<Object> sortSetRangeByLex(K key, RedisZSetCommands.Range range, RedisZSetCommands.Limit limit) {
return this.operateSortSet().rangeByLex(key, range, limit);
}
public <K> Long addGeo(K key, RedisGeoCommands.GeoLocation geoLocation) {
return this.operateGeo().add(key, geoLocation);
}
public <K, M> Long addGeo(K key, Point point, M m) {
return this.operateGeo().add(key, point, m);
}
public <K, M> Long addGeo(K key, Map<M, Point> map) {
return this.operateGeo().add(key, map);
}
public <K> Long addGeo(K key, Iterable<RedisGeoCommands.GeoLocation> geoLocationIterator) {
return this.operateGeo().add(key, geoLocationIterator);
}
public <K, M> Long removeGeo(K key, M... ms) {
return this.operateGeo().remove(key, ms);
}
public <K, M> List<Point> geoPosition(K key, M... ms) {
return this.operateGeo().position(key, ms);
}
public <K, M> List<String> geoHash(K key, M... ms) {
return this.operateGeo().hash(key, ms);
}
public <K, M> Distance geoDistance(K key, M m1, M m2) {
return this.operateGeo().distance(key, m1, m2);
}
public <K, M> Distance geoDistance(K key, M m1, M m2, Metrics metrics) {
return this.operateGeo().distance(key, m1, m2, metrics);
}
public <K> GeoResults geoRadius(K key, Circle circle) {
return this.operateGeo().radius(key, circle);
}
public <K, M> GeoResults geoRadius(K key, M m, Double distance) {
return this.operateGeo().radius(key, m, distance);
}
public <K, M> GeoResults geoRadius(K key, Circle circle, RedisGeoCommands.GeoRadiusCommandArgs args) {
return this.operateGeo().radius(key, circle, args);
}
public <K, M> GeoResults geoRadius(K key, M m, Distance distance, RedisGeoCommands.GeoRadiusCommandArgs args) {
return this.operateGeo().radius(key, m, distance, args);
}
public <K, V> Long addHyperLogLog(K key, V... values) {
return this.operateHyperLogLog().add(key, values);
}
public <K> void deleteHyperLogLog(K key) {
this.operateHyperLogLog().delete(key);
}
public <K> Long sizeHyperLogLog(K... key) {
return this.operateHyperLogLog().size(key);
}
public <K> Long unionHyperLogLog(K key, K... keys) {
return this.operateHyperLogLog().union(key, keys);
}
}
RedisTest
package com.czk.common;
import com.alibaba.fastjson.JSONObject;
import com.czk.common.redis.RedisUtil;
import org.assertj.core.util.IterableUtil;
import org.assertj.core.util.Lists;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.geo.*;
import org.springframework.data.redis.connection.RedisGeoCommands;
import org.springframework.data.redis.core.DefaultTypedTuple;
import org.springframework.data.redis.core.ZSetOperations;
import javax.annotation.Resource;
import java.time.Duration;
import java.time.Instant;
import java.time.LocalDateTime;
import java.util.*;
import java.util.concurrent.TimeUnit;
@SpringBootTest
public class CommonDemoTest {
@Resource
RedisUtil redisUtil;
@Test
public void setString() {
redisUtil.setString("setString1", "setString1");
redisUtil.setString("setString2", 2);
redisUtil.setString("setString3", 3.0);
}
@Test
public void setStringWithExpired() {
redisUtil.setStringWithExpired("setStringWithExpired1", "setStringWithExpired1", 1000l, null);
redisUtil.setStringWithExpired("setStringWithExpired2", "setStringWithExpired2", 2000l, TimeUnit.SECONDS);
redisUtil.setStringWithExpiredDuration("setStringWithExpired3", "setStringWithExpired3", Duration.ofHours(1));
}
@Test
public void setStringIfAbsent() {
boolean flag0 = redisUtil.setStringIfAbsent("setString1", "setString1");
boolean flag1 = redisUtil.setStringWithExpiredIfAbsent("setStringWithExpired1", "setStringWithExpired1", 1000l, null);
boolean flag2 = redisUtil.setStringWithExpiredIfAbsent("setStringWithExpired2", "setStringWithExpired2", 2000l, TimeUnit.SECONDS);
boolean flag3 = redisUtil.setStringWithExpiredDurationIfAbsent("setStringWithExpired3", "setStringWithExpired3", Duration.ofHours(1));
boolean flag4 = redisUtil.setStringWithExpiredIfAbsent("setStringWithExpired4", "setStringWithExpired4", 1000l, null);
boolean flag5 = redisUtil.setStringWithExpiredIfAbsent("setStringWithExpired5", "setStringWithExpired5", 2000l, TimeUnit.SECONDS);
boolean flag6 = redisUtil.setStringWithExpiredDurationIfAbsent("setStringWithExpired6", "setStringWithExpired6", Duration.ofHours(1));
System.out.println(flag0);
System.out.println(flag1);
System.out.println(flag2);
System.out.println(flag3);
System.out.println(flag4);
System.out.println(flag5);
System.out.println(flag6);
}
@Test
public void expire() {
boolean setStringxxx = redisUtil.expire("setStringxxx", 1000l, TimeUnit.SECONDS);
System.out.println(setStringxxx);
boolean setString1 = redisUtil.expire("setString1", 1000l, TimeUnit.SECONDS);
boolean setString11 = redisUtil.expire("setString1", Duration.ofHours(2));
System.out.println(setString1);
System.out.println(setString11);
}
@Test
public void expireAt() {
redisUtil.expiredAt("setString1", new Date());
redisUtil.expiredAt("setString1", Instant.now());
}
@Test
public void getExpire() {
Long setStringxxx = redisUtil.getExpire("setStringxxx1");
Long setString1 = redisUtil.getExpired("setString1", TimeUnit.SECONDS);
System.out.println(setStringxxx);
System.out.println(setString1);
}
@Test
public void setObjectToJson() {
Student student = new Student();
student.setName("李四");
student.setAge(15);
student.setLocalDateTime(LocalDateTime.now());
student.setIdCard("123123456456789789");
String zs = JSONObject.toJSONString(student);
redisUtil.setString("zs", zs);
Object zs1 = redisUtil.getString("zs");
System.out.println(zs1);
JSONObject jsonObject = JSONObject.parseObject(zs1.toString());
Student o = JSONObject.toJavaObject(jsonObject, Student.class);
System.out.println(o);
}
@Test
public void setHash() {
Student student1 = new Student("zs", 13, LocalDateTime.now(), "123");
Student student2 = new Student("ls", 14, LocalDateTime.now(), "123");
Student student3 = new Student("ww", 15, LocalDateTime.now(), "123");
Student student4 = new Student("zl", 16, LocalDateTime.now(), "123");
redisUtil.pushHash("students","student1",student1);
boolean flag = redisUtil.pushHashIfAbsent("students", "student1", student1);
System.out.println(flag);
boolean flag1 = redisUtil.pushHashIfAbsent("students", "student1", student2);
System.out.println(flag1);
boolean flag2 = redisUtil.pushHashIfAbsent("students", "student2", student2);
System.out.println(flag2);
Map map = new HashMap();
map.put("student3",student3);
map.put("student4",student4);
redisUtil.pushHashMap("students",map);
}
@Test
public void setHashWithExpire(){
Student student = new Student("zs", 13, LocalDateTime.now(), "123");
redisUtil.pushHashWithExpire("stu","zs",student,Duration.ofHours(1));
}
@Test
public void getHash(){
User user = new User();
user.setAge(11);
user.setName("yy");
user.setAddress(new Address("gz"));
redisUtil.pushHash("users","user",user);
Object hash = redisUtil.getHash("users", "user");
System.out.println(hash);
}
@Test
public void getHashEntries(){
Map<Object, Object> users = redisUtil.getHashEntries("users");
System.out.println(users);
}
@Test
public void getHashWithLocalDateTime(){
Student student = new Student("zs", 13, LocalDateTime.now(), "123");
redisUtil.pushHash("students","zs",student);
Object hash = redisUtil.getHash("students", "zs");
System.out.println(hash);
}
@Test
public void hasKey(){
boolean stu = redisUtil.hasKey("stu");
System.out.println(stu);
boolean users = redisUtil.hasKey("users");
System.out.println(users);
boolean xxxxx = redisUtil.hasKey("xxxxx");
System.out.println(xxxxx);
boolean b = redisUtil.hashHashKey("users", "user");
System.out.println(b);
boolean b1 = redisUtil.hashHashKey("users", "xxxx");
System.out.println(b1);
}
@Test
public void getHashKeys(){
Set students = redisUtil.getHashKeys("students");
System.out.println(students);
}
@Test
public void delKey(){
boolean delKey = redisUtil.delKey("users");
System.out.println(delKey);
Long delKeys = redisUtil.delKeys(Lists.list("stu", "students"));
System.out.println(delKeys);
}
@Test
public void list(){
System.out.println(redisUtil.leftPushList("list", "a"));
redisUtil.rightPushList("list","A");
redisUtil.leftPushListAll("list","b","c","d");
redisUtil.rightPushListAll("list","B","C","D");
System.out.println(redisUtil.listSize("list"));
Collection<Object> list = redisUtil.listRange("list", 0l, 8l);
System.out.println(list);
System.out.println(redisUtil.listIndex("list", 0l));
System.out.println(redisUtil.listIndex("list", redisUtil.listSize("list") - 1));
System.out.println(redisUtil.listIndex("list", -1l));
Long aLong = redisUtil.listRemove("list","a",1l);
System.out.println(aLong);
Collection<Object> objects = redisUtil.listRange("list", 0l, redisUtil.listSize("list") - 1);
System.out.println(objects);
}
@Test
public void set(){
redisUtil.addSet("set1",1,3,5,"a","b","c");
redisUtil.addSet("set2",1,2,4,6,"A","B","C","d");
Set<Object> set1 = redisUtil.getSetMembers("set1");
Set<Object> set2 = redisUtil.getSetMembers("set2");
System.out.println(set1);
System.out.println(set2);
Set<Object> objects = redisUtil.unionSet("set1", "set2");
System.out.println(objects);
Set<Object> objects1 = redisUtil.differenceSet("set1", "set2");
Set<Object> objects2 = redisUtil.differenceSet("set2", "set1");
System.out.println(objects1);
System.out.println(objects2);
Collection collection = new HashSet();
collection.add("set2");
collection.add("set3");
redisUtil.addSet("set3",1,2,3,4,"A","a","x","X","d","D");
Set<Object> objects3 = redisUtil.differenceSet("set1",collection);
System.out.println(objects3);
collection.add("set1");
Set set = redisUtil.differenceSet(collection);
System.out.println(set);
System.out.println("------------------------");
redisUtil.addSet("s1",1,2,3,7);
redisUtil.addSet("s2",4,5,6,1,2);
redisUtil.addSet("s3",7,8,9,1,4,2);
Set<Object> objects4 = redisUtil.intersectSet("s1", "s2");
System.out.println(objects4);
Collection collection1 = new HashSet();
collection1.add("s2");
Set set3 = redisUtil.intersectSet("s1", collection1);
System.out.println(set3);
collection1.add("s3");
Set set4 = redisUtil.intersectSet("s1",collection1);
System.out.println(set4);
collection1.add("s1");
Set set5 = redisUtil.intersectSet(collection1);
System.out.println(set5);
System.out.println("---------------------------------");
System.out.println(redisUtil.popSet("s1"));
System.out.println(redisUtil.popSet("s1"));
Collection<Object> s2 = redisUtil.popSet("s2", 3L);
System.out.println(s2);
System.out.println("-----------------------------------");
redisUtil.addSet("isMember",1);
System.out.println(redisUtil.isMemberSet("isMember", 1));
System.out.println(redisUtil.isMemberSet("isMember", 2));
System.out.println("-----------------------------------");
redisUtil.addSet("move1",1,2,3);
redisUtil.addSet("move2",2,4,6);
redisUtil.moveSet1To2("move1",1,"move2");
System.out.println(redisUtil.getSetMembers("move1"));
System.out.println(redisUtil.getSetMembers("move2"));
}
@Test
public void sortSet(){
redisUtil.addSortSet("sortSet","a",1.0);
redisUtil.addSortSet("sortSet","b",2.0);
Set<ZSetOperations.TypedTuple<Object>> set = new HashSet<>();
DefaultTypedTuple typedTuple2= new DefaultTypedTuple("d",4.0);
DefaultTypedTuple typedTuple1 = new DefaultTypedTuple("c",3.0);
DefaultTypedTuple typedTuple4 = new DefaultTypedTuple("f",6.0);
DefaultTypedTuple typedTuple3 = new DefaultTypedTuple("e",5.0);
DefaultTypedTuple typedTuple6 = new DefaultTypedTuple("h",8.0);
DefaultTypedTuple typedTuple7 = new DefaultTypedTuple("i",9.0);
DefaultTypedTuple typedTuple5 = new DefaultTypedTuple("g",7.0);
set.add(typedTuple1);
set.add(typedTuple2);
set.add(typedTuple3);
set.add(typedTuple4);
set.add(typedTuple5);
set.add(typedTuple6);
set.add(typedTuple7);
System.out.println("add:"+redisUtil.addSortSet("sortSet", set));
System.out.println("count:"+redisUtil.sortSetCount("sortSet", 1.1, 8.0));
System.out.println("size:"+redisUtil.sortSetSize("sortSet"));
System.out.println(redisUtil.sortSetRank("sortSet", "a"));
System.out.println(redisUtil.sortSetScore("sortSet","b"));
System.out.println(redisUtil.sortSetCard("sortSet"));
Set<Object> sortSet = redisUtil.sortSetRange("sortSet", 0l, 5l);
System.out.println(sortSet);
Set<Object> sortSet1 = redisUtil.sortSetRangeByScore("sortSet", 1.0, 5.0);
System.out.println(sortSet1);
Set<ZSetOperations.TypedTuple<Object>> sortSet2 = redisUtil.sortSetRangeByScoreWithScore("sortSet", 1.0, 5.5);
sortSet2.stream().forEach(e->{
System.out.println(e.getValue() + "--" + e.getScore());
});
System.out.println("------------------");
Set<ZSetOperations.TypedTuple<Object>> sortSet3 = redisUtil.sortSetRangeByScoreWithScore("sortSet", 1.0, 5.5,0l,3l);
sortSet3.stream().forEach(e->{
System.out.println(e.getValue() + "--" + e.getScore());
});
System.out.println("------------------");
redisUtil.removeSortSet("sortSet","a");
redisUtil.removeSortSetRange("sortSet",1l,4l);
Set<ZSetOperations.TypedTuple<Object>> sortSet4 = redisUtil.sortSetRangeByScoreWithScore("sortSet", 1.0, 5.5,0l,3l);
sortSet4.stream().forEach(e->{
System.out.println(e.getValue() + "--" + e.getScore());
});
}
@Test
public void geo(){
RedisGeoCommands.GeoLocation<String> gz = new RedisGeoCommands.GeoLocation<>("广州", new Point(1.0, 1.0));
Long geo = redisUtil.addGeo("geo", gz);
System.out.println(geo);
Map map = new HashMap();
map.put("深圳",new Point(2.0, 2.0));
map.put("汕头",new Point(2.5, 2.5));
Long geo1 = redisUtil.addGeo("geo", map);
System.out.println(geo1);
Long aLong = redisUtil.addGeo("geo", new Point(1.5, 1.5), "佛山");
System.out.println(aLong);
Iterable<RedisGeoCommands.GeoLocation> iterable = IterableUtil.iterable(new RedisGeoCommands.GeoLocation<>("上海", new Point(3.0, 3.0)),
new RedisGeoCommands.GeoLocation<>("北京", new Point(4.0, 4.0)));
redisUtil.addGeo("geo",iterable);
Map map1 = new HashMap();
map1.put("remove1",new Point(2.1, 2.1));
map1.put("remove2",new Point(2.2, 2.2));
map1.put("exist",new Point(2.3, 2.3));
Long geo2 = redisUtil.addGeo("geo", map1);
System.out.println(geo2);
Long aLong1 = redisUtil.removeGeo("geo", "remove1", "remove2");
System.out.println(aLong1);
Distance distance = redisUtil.geoDistance("geo", "广州", "深圳");
System.out.println(distance);
System.out.println(distance.getValue() +"-" +distance.getMetric());
Distance distance1 = redisUtil.geoDistance("geo", "广州", "深圳", Metrics.MILES);
System.out.println(distance1);
Distance distance2 = redisUtil.geoDistance("geo", "广州", "深圳", Metrics.KILOMETERS);
System.out.println(distance2);
Collection<Point> points = redisUtil.geoPosition("geo", "汕头", "广州");
System.out.println(points);
Collection<String> list = redisUtil.geoHash("geo", "深圳", "佛山");
System.out.println(list);
Circle circle = new Circle(new Point(1.0,1.0),10000.0);
GeoResults geo3 = redisUtil.geoRadius("geo", circle);
System.out.println(geo3);
RedisGeoCommands.GeoRadiusCommandArgs geoRadiusCommandArgs = RedisGeoCommands.GeoRadiusCommandArgs.newGeoRadiusArgs();
GeoResults geo4 = redisUtil.geoRadius("geo", circle, geoRadiusCommandArgs);
System.out.println(geo4);
Distance distance3 = new Distance(500,Metrics.MILES);
GeoResults geoResults = redisUtil.geoRadius("geo", "深圳", distance3, geoRadiusCommandArgs.limit(3));
System.out.println(geoResults);
}
@Test
void operateHyperLogLog(){
Long loglog1 = redisUtil.operateHyperLogLog().add("LOGLOG1", 1,2,3,4,5,6,7,1,2,3,4,5,6,7,8,9,0);
Long loglog2 = redisUtil.operateHyperLogLog().add("LOGLOG2", 1,2,3,4,5,6,7,8,9,0,11);
System.out.println(loglog1);
System.out.println(loglog2);
Long size = redisUtil.operateHyperLogLog().size("LOGLOG1", "LOGLOG2");
System.out.println(size);
Long union = redisUtil.operateHyperLogLog().union("LOGLOG3", "LOGLOG1", "LOGLOG2");
System.out.println(union);
System.out.println("----------------------");
redisUtil.addHyperLogLog("LOG1",1,2,3);
redisUtil.addHyperLogLog("LOG1",4,5,6);
redisUtil.addHyperLogLog("LOG2",1,2,3,7);
System.out.println(redisUtil.sizeHyperLogLog("LOG1"));
System.out.println(redisUtil.sizeHyperLogLog("LOG2"));
System.out.println(redisUtil.sizeHyperLogLog("LOG1", "LOG2"));
System.out.println(redisUtil.unionHyperLogLog("LOG3", "LOG1", "LOG2"));
redisUtil.deleteHyperLogLog("LOG1");
}
@Test
public void t(){
redisUtil.setString("1","user1");
}
}