Redis常见类型
- 常用类型
- String字符串类型
- Hash字典类型
- List列表类型
- Set集合类型
- ZSet有序集合类型
- Java程序操作Redis
- 代码操作Redis
常用类型
String字符串类型
使用方式:
使用场景:
Hash字典类型
字典类型(Hash) 又被成为散列类型或者是哈希表类型,它是将一个键值(key) 和一个特殊的“哈希表”关联起来,这个“哈希表”表包含两列数据: 字段和值,它就相当于 Java 中的Map<String,Map<String,String>> 结构。套娃是吧!
底层实现:
使用场景:
List列表类型
列表类型(list)是一个使用链表结构存储的有序结构,它的元素插入会按照先后顺序存储到链表结构中,因此它的元素操作(插入和删除)时间复杂度为 O(1),但它的查询时间复杂度为 O(n)
使用方式:
使用场景:
Set集合类型
list是可以先进先出;可以重复;set不可以重复;如果存的重复就合并数据;但是是无序的。
使用场景:
ZSet有序集合类型
有序集合Sorted Set也称为ZSet;因为底层使用压缩表(ziplist)和跳跃表(skiplist)实现。
压缩列表 (ziplist) 本质上就是个字节数组是Redis为了节约内存而设计的一种线性数据结构,可以包含任意多个元素,每个元素可以是一个字节数组或一个整数。元素少的时候或者元素多但是比较短小;即数据比较少就使用压缩包;数据多就升级跳跃表。
有序集合类型(Sorted Set) 相比于集合类型多了一个排序属性 score (分值),对于有序集合 ZSet 来说,每个存储元素相当于有两个值组成的,一个是有序结合的元素值,一个是排序值。有序集合的存储元素值也是不能重复的,但分值是可以重复的。
使用场景:
学生成绩排名;粉丝列表;根据关注的先后时间排序
Java程序操作Redis
代码操作Redis
1:搞定配置后
2:注入RedisTemplate对象; 这个对象是Java程序和Redis交互工具;提供很多操作RedisAPI。直接通过这些API去操作Redis; 不用使用命令
(注意:如果是专业版idea;@Autowired会提示报错;但是不影响效果)
3:常见类型操作
通过这些对象的方法就能实现真正操作Redis
具体代码:
@RestController
public class RedisController {
@Resource
private RedisTemplate redisTemplate;
@RequestMapping("/save")
public String save() {
redisTemplate.opsForValue().set("userinfo", "zhangsan");//默认是没有设置过期时间;负1 ;
//redisTemplate.opsForValue().set("userinfo", "zhangsan",1000 , TimeUnit.MILLISECONDS));
return "ok";
//TimeUnit.DAYS 日的工具类
//TimeUnit.HOURS 时的工具类
//TimeUnit.MINUTES 分的工具类
//TimeUnit.SECONDS 秒的工具类
//TimeUnit.MILLISECONDS 毫秒的工具类
}
@RequestMapping("/get")
public Object get() {
return redisTemplate.opsForValue().get("userinfo");
}
//操作哈希
@RequestMapping("/save2")
public String save2() {
redisTemplate.opsForHash().put("myhash", "username", "lisi");
return "ok";
}
@RequestMapping("/get2")
public Object get2() {
return redisTemplate.opsForHash().get("myhash", "username"); // lish
}
}
执行:我们现在去浏览器输入这个url;触发这些执行
效果:发现Redis确实有点东西