Redis 是什么
Redis
是 开源,内存 中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。它支持多种类型的数据结构,如 字符串strings
, 散列 hashes
, 列表 lists
, 集合 sets
, 有序集合 sorted sets
与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。
Redis
还内置了 复制(replication
),LUA脚本(Lua scripting
), LRU驱动事件(LRU eviction
),事务(transactions
) 和不同级别的 磁盘持久化(persistence
), 并通过 Redis哨兵(Sentinel
)和自动 分区(Cluster
)提供高可用性(high availability
)。
嗯,没错这就是 redis
中文官方网站上面的介绍,简洁明了。
NoSQL 是什么
我们知道 redis
是一种非关系型数据库 NoSQL
。而为什么出现 NoSQL
?NoSQL
又是什么呢?
单机数据库的年代
在一个网站访问量不大的时候,我们使用一个数据库就足以应对流量请求。
缓存 + 拆分
随着访问量的上升,一个数据库已经不能满足我们的需求了。为了更高的性能,我们在中间加上了一个缓存层并且将数据库做了集群、结构优化和读写分离。
而这里的缓存就是 NoSQL
,当然做缓存也只是 NoSQL
的一种功能,就像 Redis
并不仅仅有缓存这一种功能。比如它还能实现 简单的消息队列,解决Session共享,计数器,排行榜,好友关系处理 等等功能,可见 Redis
是一个非常强大工具,让我们来学习它吧!
Redis 通用命令
首先我们抛开数据类型来讲关于 Redis
的通用命令。
![](https://i-blog.csdnimg.cn/blog_migrate/62669693081813e51533ac380b24fd30.png)
操作 key 和 value
Redis
是一种 key
value
存储的缓存数据库,所有的数据都有一个自己唯一的key。
这里为了方便演示,我使用了字符串相关的设置命令
keys [pattern]
获取符合要求的所有key。时间复杂度为O(n)
,一般在生产环境中不使用,因为Redis
是单线程的,执行耗时的任务会阻塞其他任务。一般会使用scan
命令替代(非阻塞)。
![](https://i-blog.csdnimg.cn/blog_migrate/ecb84e59f8ea73dda72757aa6f7c5a2b.png)
dbsize
获取当前存储数据个数。exists key
判断是否存在该keydel key
删除指定数据type key
获取指定key的数据类型rename key newkey
重命名