在面试中会经常问到,你说说redis中有几种数据类型,分别解释一下,这里总结一下,在redis中都有哪几种数据类型,每种类型的用法,在redis中有五种数据类型,分别为string、hash、list、set、zset
Redis的五种数据类型
数据类型 | 说明 |
---|---|
String | 是Redis中最基本的数据类型,二进制安全的,它可以包含任意数据类型。如图片。Redis中String类型的数据上限的512M |
Hash | 是一个string类型的field和value的映射表,hash特别适合用于存储对象。Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿) |
List | Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。 |
set | Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。 |
ZSet | 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。 |
Redis是一个非关系型数据库 ,所以它都是以key/value键值对的形式存储,上面说的五种数据类型就是key/value中的value类型,key都是Sring类型的
在说数据类型之前总结一些通用的命令,因为上面五种数据类型结构有所不同,那么它们的命令也会有所不同,但仍有一些通用的命令
常用的通用命令
在redis中,默认给我们提供了16个数据库,编号从0到15,我们默认进入的是0号数据库,我们先设置一个key/value值,来看看
默认存储在0号数据库中,我们可以切换,用select,在redis中命令是不区分大小写的,但是存储的数据时区分大小写的,比如,set Name zhangsan 和set name zhangsan就是不一样的
select
在切换到1号数据库中之后,再次获取name属性值,是为null的,这也解释了我们之前存的数据是在0号库的
del
删除命令,指定key值,可以跟多个key值,进行删除
这里切回到0号数据库
删除成功提示并返回记录数,删除了几条数据
dump
序列化给定的key值,并返回被序列化的值
key如果不存在则返回null
exists
判断指定的key是否存在,1表示存在,0表示不存在
expire
给指定的key设置有效时间,单位为秒
ttl
查看指定的key的有效时间
-2表示key不存在了
再次查询为null
pexpire
也是设置有效时间,只不过单位是毫秒
pttl
查看有效时间,返回的是毫秒为单位,毫秒单位很快,不容易察觉到,设置的key就过期了
keys
查看所有的key值
randomkey
从数据库中随机返回一个key
type
查看指定key的类型
rename
修改指定key的名称
flushdb
清空当前数据库
flushall
清空所有的数据库,但不建议这么做