redis的数据是存在内存里吗?
首先要明白redis是一个数据库,redis是一个内存数据库,所有数据基本上都存在于内存当中,会定时以追加或者快照的方式刷新到硬盘中。 (推荐学习:Redis视频教程)
由于redis是一个内存数据库,所以读取写入的速度是非常快的,所以经常被用来做数据,页面等的缓存。
Redis最为常用的数据类型主要有以下:
String
Hash
List
Set
Sorted set
pub/sub
Transactions
首先Redis内部使用一个redisObject对象来表示所有的key和value,redisObject最主要的信息如上所示:
type代表一个value对象具体是何种数据类型,encoding是不同数据类型在redis内部的存储方式。
比如:type=string代表value存储的是一个普通字符串,那么对应的encoding可以是raw或者是int,如果是int则代表实际redis内部是按数值型类存储和表示这个字符串的,当然前提是这个字符串本身可以用数值表示,比如:"123" "456"这样的字符串。
这里需要特殊说明一下vm字段,只有打开了Redis的虚拟内存功能,此字段才会真正的分配内存,该功能默认是关闭状态的。
我们可以发现Redis使用redisObject来表示所有的key/value数据是比较浪费内存的,当然这些内存管理成本的付出主要也是为了给Redis不同数据类型提供一个统一的管理接口,实际作者也提供了多种方法帮助我们尽量节省内存使用。
更多Redis相关技术文章,请访问Redis入门教程栏目进行学习!