一.redis产生背景
传统关系型数据库满足不了日益增长的高读写需求;由于数据库的持久化数据主要面向的是磁盘,而磁盘的读写比较慢,在一般的管理系统上,由于不存在高并发,因此往往不需要瞬间大量读写数据的要求。
二.redis作用
redis作用就是缓存这些数据,而它是缓存在cpu中,都知道读取cpu中的数据速度是极高的,这样就提高了速度。它有两个使用场景 1.缓存常用数据。2.在高速读写的场合使用它快速读写,而显示的情况是读操作次数远远大于写操作次数一波是1:9到3:7这样的比例。
使用redis作缓存需要考虑以下3个因素:
(1).业务数据常用吗?命中率如何?如果命中率低,就没比要写入缓存。
(2).该业务是读取操作多,还是写操作多,频繁的写入数据库也没必要使用缓存。
(3).业务数据大小如何?如果几百兆字节的文件,会给缓存带来很多压力,有没有必要?
三.redis逻辑
当第一次读取数据的时候,读取redis的数据会失败,因为此时缓存中还没有数据,所以会触发程序读取数据库,把数据读出来,并且写入redis。
当第二次以后读取数据时,因为缓存中有数据,就直接读取缓存中的,这样速度就提高了,直接从cpu中读取数据,减少了对数据库的访问。
四。redis数据类型
redis是一种基于内存的数据库,并且提供一定的持久化功能,为什么说是一定呢,因为它是写入cpu,而不是写入磁盘 数据库,所有当停电或者机器故障,那么数据就很容易丢失。它是一种键值对,使用key作为索引找到当前缓存数据
数据类型 | 数据类型存储的值 |
---|---|
String | 可以保存字符串,整数,浮点数 |
List | 它是一个链表,它的每一个节点都包含一个字符串 |
Set(无序) | 它是一个收集器,但是是无序的,在里面每一个元素都是一个字符串,而且是独一无二的 |
Hash | 、它类似于java语言中的Map,是一个键值对应的无序列表 |
ZSet(有序) | 它是一个有序集合,可以包含字符串,整数,浮点数,分值(score),元素的排序是根据分值大小决定的 |
HyperLogLog(基数) | 它的作用是计算重复的值,以确定存储的数量 |
参考书籍—JavaEE互联网轻量级框架整合开发
Redis(2)—数据操作
往后也将继续更新续集