Redis是一个缓存型数据库,或者平时就叫它缓存。它支持存储的类型有以下几种:
- string(字符串)
- hash(哈希)
- list(列表)
- set(集合)
- zset(sorted set:有序集合)
特别注意的是redis的存储类型不是指Redis通过key查找redis内容,本人起初一直误解redis只有key-value结构。这里的存储类型单单指内容(value)的类型。和我们使用的set的key,get的key的那个key不是一回事。
1.Sring字符串类型,就是存储任意字符串;
如:
存储了”3“字符串,或者3这个数字。
还有这种也是String类型:
它是一个对象型字符串,通过反射可以转换成对象。
2.HASH:是一个键值(key => value)对集合。Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
特别注意的是redis的存储类型不是指Redis通过key查找redis内容,本人起初一直误解redis只有key-value结构。这里的存储类型单单指内容(value)的类型。和我们使用的set的key,get的key的那个key不是一回事。
如:
3.LIST类型
项目中还没使用到,后续再更新。
Redis支持多种数据类型,以下是其主要的几种数据类型及其详细用法:
-
String(字符串)类型:
- String类型是Redis中的基础数据类型,所有的key都是字符串类型。无论存入的是字符串、整数、浮点数,都会以字符串的形式写入Redis。
- 常用命令:set, get, decr, incr, mget等。
- 应用场景:String是最常用的数据类型,可以实现Memcached的功能,并且效率更高。还可以享受Redis的定时持久化、操作日志及Replication等功能。例如,可以用String来存储微博数、粉丝数等。
-
Hash(表)类型:
- Redis的Hash是一种键值对集合的数据结构。
- 常用命令:hget, hset, hgetall等。
- 应用场景:该类型非常适合于存储对象的信息,如一个用户有姓名、密码、年龄等信息。
-
List(列表)类型:
- Redis的List是字符串列表,按插入顺序排序。可以向Redis的List头部或尾部添加元素。和数据结构中的普通链表一样,可以在其左部(left)和右部(right)添加新的元素。
- 常用命令:lpush, rpush, lpop, rpop, lrange, BLPOP(阻塞版)等。
- 应用场景:Redis的List的应用场景非常多,也是Redis最重要的数据结构之一。可以轻松地实现最新消息排行等功能。List的另一个应用就是消息队列,可以利用Lists的PUSH操作,将任务存在Lists中,然后工作线程再用POP操作将任务取出进行执行。
-
Set(集合)类型:
- Redis的Set是String类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
- 常用操作:sadd, spop, smembers, sunion等。
- 应用场景:Redis的Set对外提供的功能与List类似是一个列表的功能,特殊之处在于Set是可以自动排重的,当需要存储一个列表数据,又不希望出现重复数据时,Set是一个很好的选择,并且Set提供了判断某个成员是否在一个Set集合内的重要接口,这个也是List所不能提供的。例如,可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一个集合。
-
Zset(有序集合)类型:
- Redis的有序集合和集合一样也是String类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
- 常用命令:zadd, zrange, zrem, zcard等。
- 应用场景:Redis的有序集合概念就是一堆不重复值的组合,每个元素是唯一的。可以利用Redis提供的Sets数据结构,可以存储一些集合性的数据,比如在微博应用中,可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一个集合。Redis还为集合提供了求交集、并集、差集等操作,可以非常方便的实现如共同关注、共同喜好、二度好友等功能,对以上的所有集合操作,还可以使用不同的命令选择将结果返回给客户端还是存集到一个新的集合中。
以上就是Redis支持的主要数据类型及其详细用法和相关应用场景。这些数据类型可以帮助用户更高效地处理和存储数据,提高系统的整体性能和可扩展性。