Redis是什么
Redis:REmote DIctionary Server(远程字典服务器) 是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(key/value)分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库,是当前最热门的NoSql数据库之一,也被人们称为数据结构服务器。 Redis 与其他 key - value 缓存产品有以下三个特点:
- Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用;
- Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储;
- Redis支持数据的备份,即master-slave模式的数据备份;
为什么需要Redis
随着数据量的增长和读写数据压力不断增加,使用mySQL之类的数据库在高QPS的场景下是支撑不住的,所以需要想办法提高数据存取速度。数据存在内存中读取速度很快,所以Redis就应运而生。 热数据即经常访问的数据存放在Redis中,冷数据存储到磁盘中。
Redis基本工作原理
数据存放在内存中会面临一个问题,当服务器重启时,内存中的数据就会丢失。Redis实现了数据持久化。实现原理类似数据库的恢复技术
Redis4.0之后提供了混合持久化方式,也就是:采用RDB快照以一定频率执行保存数据,而在两次快照之间,使用AOF日志记录这期间的所有命令操作。
redis五大数据类型
string
string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value; string类型是二进制安全的。意思是redis的string可以包含任何数据。如jpg图片或者序列化的对象 ; string类型是Redis最基本的数据类型,一个redis中字符串value最多可以是512M;
list
redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)。它的底层实际是个链表。
set
redis的set是string类型的无序集合。它是通过HashTable实现的。
hash
redis的hash 是一个键值对集合; redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象; 类似Java里面的Map<String,Object>;
zset(sorted set)
redis的zset 和 set 一样也是string类型元素的集合,且不允许重复的成员; 不同的是每个元素都会关联一个double类型的分数; redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复;