package com.leiyijia.demo.redis;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.stereotype.Component;
import lombok.Data;
import lombok.NoArgsConstructor;
@SpringBootApplication
@Component
public class RedisScene {
@Resource(name = "redisTemplate")
private RedisTemplate<String, Object> template;
//计数器
public long increment(String key, long num) {
return template.opsForValue().increment(key, num);
}
//列表,返回列表长度
public long add2List(String key, Object value) {
return template.opsForList().leftPush(key, value);
}
//从左往右取出列表数据
public List getList(String key, long start, long end) {
return template.opsForList().range(key, start, end);
}
//给不重复的set集合添加数据,返回被添加的元素大小,不包括已经在set内的元素个数
public long addSet(String key, Object value) {
return template.opsForSet().add(key, value);
}
//获取计set中某个key的value集合
public long countSet(String key) {
return template.opsForSet().members(key).size();
}
//hash,存储对象
public void addObject(String key, Object value) {
template.opsForHash().put(key, key.hashCode(), value);
}
public Object getObject(String key) {
return template.opsForHash().get(key, key.hashCode());
}
public static void main(String[] args) throws InterruptedException {
ConfigurableApplicationContext context = SpringApplication.run(RedisScene.class, args);
RedisScene scene = context.getBean(RedisScene.class);
//用户1的粉丝数
String key = "user:1:fans";
System.out.println(scene.increment(key, 1));
//用户1收藏的文章列表
key = "user:1:arctiles";
int article_id = 123;
for(int i=0;i<20;i++)
scene.add2List(key, article_id++);
List subList = scene.getList(key,0,9);
for(int i=0;i<subList.size();i++)
System.out.println(subList.get(i));
//关注点赞
key = "article:1";
scene.addSet(key, "user1");
scene.addSet(key, "user2");
scene.addSet(key, "user2");
System.out.println("article:1的关注用户有:"+scene.countSet(key)+"个");//2个
//存储用户
User user = new RedisScene.User();
user.setUserId(1);
user.setName("用户1");
String userKey = "user:"+user.getUserId();
((RedisTemplate) context.getBean("redisTemplate")).setHashValueSerializer(new Jackson2JsonRedisSerializer<User>(User.class));
scene.addObject(userKey, user);
System.out.println(scene.getObject(userKey));
}
@Data
@NoArgsConstructor
static class User{
private int userId;
private String name;
}
}
redis使用场景
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...