RedisTemplate的五种基本⽤法(nosql数据库)
/**
* StringRedisTemplate继承了RedisTemplate但两者的数据并不互通
redis支持的五种数据类型* ⼀共五种数据结构
* 1.redisTemplate.opsForValue() 字符串
* 2.redisTemplate.opsForHash() hash
* 3.redisTemplate.opsForList() list
* 4.redisTemplate.opsForSet() ⽆序set
* 5.redisTemplate.opsForZSet() 有序set
*
* @author :码农脱贫
*/
@SpringBootTest
@RunWith(SpringRunner.class)
public class MyTest {
@Resource
private StringRedisTemplate stringRedisTemplate;
/**
* 1.redisTemplate.opsForValue() 字符串
*/
@Test
public void testString() {
/
/存值
stringRedisTemplate.opsForValue().set("currentUser", "admin");
//取值
String currentUser = stringRedisTemplate.opsForValue().get("currentUser");
System.out.println(currentUser);
}
/**
* 2.redisTemplate.opsForHash() hash
*/
@Test
public void testHash() {
Map<String, String> map = new HashMap<String, String>();
map.put("zs", "36");
map.put("ls", "18");
map.put("wu", "40");
map.put("zl", "22");
//单独存⼀条数据
stringRedisTemplate.opsForHash().put("hash", "hh", "100");
//单独取值
String hh = (String) stringRedisTemplate.opsForHash().get("hash", "hh");
System.out.println(hh);//100
//存⼀个map
stringRedisTemplate.opsForHash().putAll("hash", map);
//根据双key获取某⼀个值
Object zs = stringRedisTemplate.opsForHash().get("hash", "zs");
System.out.println(zs);//36
//获取所有的值
List<Object> hash = stringRedisTemplate.opsForHash().values("hash");
System.out.println(hash);//[22, 18, 36, 40, 100]
}
/**
* 3.redisTemplate.opsForList() list
*/
@Test
public void testList() {
List<String> list = new ArrayList<String>();
list.add("zs");
list.add("zs");
list.add("li");
//从左边添加所有的list集合数据
stringRedisTemplate.opsForList().leftPushAll("list", list);
/**
* key:key值
* start:查询集合开始位置(从0开始)
* end:查询集合结束位置(0,-1是查询所有)
*/
List<String> stringList = stringRedisTemplate.opsForList().range("list", 0, -1);
System.out.println(stringList);//[li, zs]
}
/**
* 4.redisTemplate.opsForSet() ⽆序set
* Redis的Set是string类型的⽆序集合。
* 集合成员是唯⼀的,这就意味着集合中不能出现重复的数据。
*/
@Test
public void testSet() {
Long add = stringRedisTemplate.opsForSet().add("set", "zs", "ls", "ww", "zl");
//返回值是添加的个数
System.out.println(add);//4
//查询所有的集合数据
Set<String> set = stringRedisTemplate.opsForSet().members("set");
System.out.println(set);//[ww, ls, zs, zl] 结果也是⽆序的,和存⼊的顺序不⼀致
}
/**
* 5.redisTemplate.opsForZSet() 有序set
* Redis 有序集合和⽆序集合⼀样也是string类型元素的集合,且不允许重复的成员。
* 不同的是每个元素都会关联⼀个double类型的分数。redis正是通过分数来为集合中的成员进⾏从⼩到⼤的排序。 * 有序集合的成员是唯⼀的,但分数(score)却可以重复。
*/
@Test
public void testZSet() {
//添加数据,返回值是布尔值
stringRedisTemplate.opsForZSet().add("zset", "score-1", 1);
stringRedisTemplate.opsForZSet().add("zset", "score-2", 2);
stringRedisTemplate.opsForZSet().add("zset", "score-3", 3);
stringRedisTemplate.opsForZSet().add("zset", "score-4", 4);
//获取所有结果
Set<String> zset = stringRedisTemplate.opsForZSet().range("zset", 0, -1);
System.out.println(zset);//[score-1, score-2, score-3, score-4] 根据分数,由⼩到⼤排序
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论