ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
key-value 存储系统,是跨平台的非关系型数据库; Redis 是开源的,键值对(Key-Value)存储数据库 ## 一、Redis基本的五种数据类型: String: 字符串 Hash: 散列 List: 列表 Set: 无序集合 Sorted Set: 有序集合 ## 二、Redis 与其他 key - value 缓存产品有以下三个特点: 第一:Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 第二:Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。 第三:Redis支持数据的备份,即master-slave模式的数据备份。 ## 三、Redis的优势: 1.性能极高 2.丰富的数据类型 3.原子 – Redis的所有操作都是原子性的, Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。 ## 四、常用命令 ### 1、字符串 ~~~ 127.0.0.1:6379> SET name redis OK 127.0.0.1:6379> GET name "redis" 127.0.0.1:6379> del name (integer) 1 ~~~ ### 2、hash ~~~ 127.0.0.1:6379> HMSET runoobkey name "redis tutorial" OK 127.0.0.1:6379> HGETALL runoobkey 1) "name" 2) "redis tutorial" 127.0.0.1:6379> HDEL runoobkey name (integer) 1 127.0.0.1:6379> HMSET runoobkey name "redis tutorial" OK ~~~ ## 3、Redis 列表(List) ~~~ redis 127.0.0.1:6379> LPUSH runoobkey redis (integer) 1 redis 127.0.0.1:6379> LPUSH runoobkey mongodb (integer) 2 redis 127.0.0.1:6379> LPUSH runoobkey mysql (integer) 3 redis 127.0.0.1:6379> LRANGE runoobkey 0 10 1) "mysql" 2) "mongodb" 3) "redis" ~~~ ## 4、Redis 集合(Set) ~~~ redis 127.0.0.1:6379> SADD runoobkey redis (integer) 1 redis 127.0.0.1:6379> SADD runoobkey mongodb (integer) 1 redis 127.0.0.1:6379> SADD runoobkey mysql (integer) 1 redis 127.0.0.1:6379> SADD runoobkey mysql (integer) 0 redis 127.0.0.1:6379> SMEMBERS runoobkey 1) "mysql" 2) "mongodb" 3) "redis" ~~~ ## 5、Redis 有序集合(sorted set) ~~~ redis 127.0.0.1:6379> ZADD runoobkey 1 redis (integer) 1 redis 127.0.0.1:6379> ZADD runoobkey 2 mongodb (integer) 1 redis 127.0.0.1:6379> ZADD runoobkey 3 mysql (integer) 1 redis 127.0.0.1:6379> ZADD runoobkey 3 mysql (integer) 0 redis 127.0.0.1:6379> ZADD runoobkey 4 mysql (integer) 0 redis 127.0.0.1:6379> ZRANGE runoobkey 0 10 WITHSCORES 1) "redis" 2) "1" 3) "mongodb" 4) "2" 5) "mysql" 6) "4" ~~~ ## 五、Redis 事务 Redis 事务可以一次执行多个命令, 并且带有以下三个重要的保证: * 批量操作在发送 EXEC 命令前被放入队列缓存。 * 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。 * 在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。 一个事务从开始到执行会经历以下三个阶段: * 开始事务。 * 命令入队。 * 执行事务。 ### 实例 以下是一个事务的例子, 它先以 **MULTI** 开始一个事务, 然后将多个命令入队到事务中, 最后由 **EXEC** 命令触发事务, 一并执行事务中的所有命令: ~~~ redis 127.0.0.1:6379> MULTI OK redis 127.0.0.1:6379> SET book-name "Mastering C++ in 21 days" QUEUED redis 127.0.0.1:6379> GET book-name QUEUED redis 127.0.0.1:6379> SADD tag "C++" "Programming" "Mastering Series" QUEUED redis 127.0.0.1:6379> SMEMBERS tag QUEUED redis 127.0.0.1:6379> EXEC 1) OK 2) "Mastering C++ in 21 days" 3) (integer) 3 4) 1) "Mastering Series" 2) "C++" 3) "Programming" ~~~ 六、推荐文章 [https://blog.csdn.net/weixin_44432032/article/details/122883278?spm=1001.2014.3001.5501](https://blog.csdn.net/weixin_44432032/article/details/122883278?spm=1001.2014.3001.5501)