1. Redis总纲
Redis 是一个开源的,纯内存操作的,键值方式存储数据库,它支持多种类型的数据结构,如字符串、列表、集合、哈希、有序集合等。
2.Redis特点
性能高效:Redis能读的速度是110000次/s,写的速度是81000次/s,因此被广泛应用于缓存场景。
支持多种数据类型:Redis支持最常见的数据类型,为复杂的应用提供了广泛的可能性。
数据持久化:Redis可以将数据保存在磁盘上(RDB\AOF),重启后可以再次加载进行使用。
支持消息队列:Redis还可以用作消息队列使用,它提供了发布/订阅等相关功能。
支持事务:Redis支持事务,可以一次执行多个命令,中间不会被其他命令插入。
高可用和分布式:通过Redis的Sentinel系统和Cluster集群模式,可以构建高可用、分布式的Redis系统。
3.Redis安装和启动
Redis的安装过程根据操作系统的不同而不同。以Linux为例,可以通过如下命令进行安装:
tar xzf redis-5.0.3.tar.gz make 安装完成后,可以通过以下命令启动Redis:
$ src/redis-server
这样就成功启动了Redis服务器。要连接到这个服务器,可以新打开终端,然后输入:
$ src/redis-cli
这样就可以通过Redis脚手架的方式开始使用Redis了。
4.Redis的基础类型介绍
4.1 String类型(key:stringType)
String类型是Redis最基础的数据类型,是二进制安全的。它可以包含任何数据,例如jpeg图片或者序列化的对象,或者就简单的文本数据。String类型的value最大能存储512MB的数据。
常用命令介绍(请注意Redis声明key是区分大小写的)
- set
- get
- incr\decr(用于进行数值类型数据加减1操作,并且返回运算后结果)
4.2 List类型(key:list)
List类型是Redis的一种复杂的数据类型,也是Redis的重要特性之一。Redis的List类型实际上是一个双向链表,所以添加一个新的元素到List的头部或者尾部的复杂度是O(1)。同时由于采用链表实现,你可以利用索引下标来获取元素,或者进行范围查询,这个操作的复杂度是O(N)。
- lpush\rpush(为集合添加元素,返回操作后集合长度)
- lpop\rpop(为集合删除元素,返回删除元素的值)
- ltrim (删除指定下标区域之外的元素,用法:ltrim key start end)
- lrem(删除指定元素,用法示例:lrem key count value (count未删除值为value的个数,为0时表示全部删除))
4.3 set类型(key:set)
Set类型也是Redis的一种复杂数据类型,它是一种无序的、元素不重复的集合。由于集合中的元素是唯一的,所以可以使用Set类型来存储一些集合元素,并进行交集、并集、差集等操作。
- sadd
- srem
- sismember(判断是否存在某元素,用法示例:sismember key value)
- smembers(展示key的所有元素)
- scard(获取元素个数)
- srandmember(获取key中的随机一个元素)
- spop(随机获取key中固定个数元素,并删除元素,用法示例:spop key count)
- smove(元素移动,用法:smove key1 key2 value)
- sdiff(获取第一个key中存在,却不存在于后续key中的值,用法:sdiff key key1)
- sunion(并集)
- sinter(交集)\sintercard(取交集,只返回个数)
4.4 Hash类型(key:hash)
Hash类型是Redis的一种复杂数据类型,它相当于一种简单的二级字典:第一级的key对应一个新的字典,这个新的字典就是Hash的内部结构,拥有自己的key-value对。Hash类型适合用于存储对象。
- hgetall
- hset\hmset
- hget\hmget key1 key2 (获取二级字典值)
- hincrby
4.5 sortedset类型(key:sortset)
Sorted Set是Redis的一种复杂数据类型,也是集合的一种,能够存储一组数据,并且每个数据都有一个得分。数据是唯一的,但是得分(score)可以重复。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。而得分的值是通过跳跃表来进行排序的
- zadd key score value
- zscore key value
- zrange key start end
- zcard key
- zrem key value