springboot_data_redis

pom.xml

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-redis</artifactId>
  <!--版本由springboot管理-->
</dependency>

yml中的配制

---
spring:
    redis:
        url: redis://${SHP_REDIS_HOST:10.17.5.161}:${SHP_REDIS_PORT:6379}

RedisKeys定义

public class RedisKeys {
	public static String forUserWxSessionKey(long userId) {
		return String.format("user:%d:wxSessionKey", userId);
	}
	/**
	 * @param userId 用户ID
	 * @return 用来储存微信OpenID的key
	 */
	public static String forUserWxOpenId(long userId) {
		return String.format("user:%d:wxOpenId", userId);
	}
	
	public static String forCreatedOrderIdSet() {
		return "createdOrderIds";
	}
	/**
	 * @param templateCode 短信模板templateCode
	 * @param phoneNumber  手机号
	 * @return 用来存储短信验证码的key
	 */
	public static String forUserVerifyCode(String templateCode, String phoneNumber) {
		return String.format("%s:%s", templateCode, phoneNumber);
	}
}

redis的一些基本用

@Autowired
//org.springframework.data.redis.core.StringRedisTemplate;

key-value的操作

redis.boundValueOps(key).get();//  相当于redis.get(key)
redis.boundValueOps(key).set(value);
redis.boundValueOps(key).set(value, expire long类型100L, TimeUnit.SECONDS);
redis.boundValueOps(key).increment(1); -1 为减法
redis.boundValueOps(key).expire(5, TimeUnit.MINUTES);//5分钟失效

zset的分数的生成

private static final long SCORE_BIAS = 1514736000000L;//2018年1月1日
//按照时间戳生成一个分数
private static double currentScore() {
	return (double) (currentTimeMillis() - SCORE_BIAS);
}
//按照失效时间生成一个分数
long score = order.getExpireTime().getTime() - SCORE_BIAS + 5000;

zset的操作作用
1.可以当一个消息队列或临时的存储空间 存一些数据 然后慢慢来用自动任务或其他消费者 消费队列中的数据
2.做一个排序的索引
add

redis.boundZSetOps(key).add(value为String类型orderId, (double) score); //往集合里增加
redis.opsForZSet().add("key","value",15d);//key,value,score
批量add

//MyElement 要实现impliment  ZSetOperations.TypedTuple<String>
MyElement myElement1 = new MyElement("1",5d);
MyElement myElement2 = new MyElement("3",10d);
MyElement myElement3 = new MyElement("2",8d);
Set<ZSetOperations.TypedTuple<String>> set = new HashSet<>();
set.add(myElement1);
set.add(myElement2);
set.add(myElement3);
redis.opsForZSet().add("mqbzset", set);

MyElement的具体代码参考 连接

rangeByScore
Set<String> set= redis.boundZSetOps(key).rangeByScore(0, currentScore());  //从集合中获取指定 分数范围 的数据
//remove
redis.boundZSetOps(key).remove(value为orderId);//从集合中删除

reverseRange按倒序取结果集
//分数倒序取的人数 第三个参数1L 代表0,1两条数据
Set<String> idSet = redis.opsForZSet().reverseRange("mqbzset", 0L, 1L);

猜你喜欢

转载自blog.csdn.net/maqingbin8888/article/details/83576873