Redis数据库基础
1.关系型数据库和NoSQL数据库
数据库主要分为两大类:关系型数据库与NoSQL数据库
关系型数据库,是建立在关系模型基础是的数据库,其借助集合代数等数学概念和方法来处理数据库中的数据主流的MySQL,Oracle,MS SQL Server 和DB2都属于这类传统数据库
NoSQL数据库,意思就是适用关系型数据库的时候就使用关系型数据库,不适用的时候也没有必要非使用关系型数据库不可,可以考虑使用更加合适的数据存储。主要分为临时性键值存储(memcached,Redis),永久性键值存储(ROMA,Redis),面向文档的数据(MongDB,CouchDB),面向列的数据库(Cassandra,HBase),每种NoSQL都有其特有的使用场景及优点
2.redis介绍
Redis是一个开源的高性能键值对数据库,它通过提供多种键值数据类型来适应不同场景下的存储要求
Redis支持的键值数据类型
a.string(字符串):基本的数据存储单元,可以存储字符串,整数或者浮点数
b.hash(哈希):一个简单的列表,可以存储一系列的字符串元素
c.set(集合):一个无序集合,可以存储不重复的字符串元素
d.zset(sorted set:有序集合):类似于集合,但是每个元素都有一个分数(score)与之关联
e.位图(Bitmaps):基于字符串类型,可以对每个位进行操作
f.超日志(HyperLogLogs):用于基数统计,可以估算集合中的唯一元素数量
g.地理空间(Geospatial):用于存储地理位置信息
h.发布/订阅(Pub/Sub):一种消息通信模式,允许客户端订阅消息通道,并接受发布到该通道的消息
i.流(Streams):用于消息队列和日志存储,支持消息的持久化和时间排序
redis特点
性能价高,丰富的数据类型,原子性,数据持久化,支持publish/subscribe通知,key过期
3.Redis安装
Redis官网:
https://redis.io
3.1安装redis
3.1.1参看rhel9仓库自带的rpm包
[root@redis-master ~]# cat /etc/redhat-release
Red Hat Enterprise Linux release 9.1 (Plow)
3.1.2yum安装redis
[root@redis-master ~]# yum install redis -y
3.1.3启动redis
[root@redis-master ~]# systemctl start redis
3.1.4连接redis
[root@redis-master ~]# redis-cli -p 6379
3.1.5测试是否连接成功
[root@redis-master ~]# redis-cli -p 6379
127.0.0.1:6379> ping
PONG
4.key操作
Redis是一个开源的高性能键值对数据库,Redis的基础数据结构主要包括5种数据类型,分别是:String,List,Set,Zset,Hash
字符串类型(string)
散列类型(hash,哈希)
列表类型(list)
集合类型(set)
有序集合类型(sorted set)
redis默认有16个数据库,为0-15,可以选择数据库:
127.0.0.1:6379> select 0
OK
#########对于库的其他操作######
FLUSHDB #清空当前数据库里面所有的key
FLUSHALL #清空所有数据库里面所有的key
redis上的不同类型的key的创建上传命令不同,下面仅仅以string类型演示:
序号 | 命令语法 | 描述 |
1 | DEL key | 该命令用于在key存在时删除key |
2 | SET key value | 添加或者修改key的值 |
3 | GET key | 获取指定key的值 |
4 | TYPE key | 返回key所存储的值的类型 |
5 | EXPIRE key seconds | 为给定key设置过期时间,以秒计 |
6 | PERSIST key | 移除key的过期时间,key将持久保存 |
7 | TTL key | 以秒为单位,返回给定key的剩余生存时间 |
8 | EXISTS key | 检查给定是否存在,存在返回1,否则返回0 |
9 | MOVE key db | 将当前数据库的key移动到给定的数据库db当中 |
10 | KEYS pattern | 查找所有符合给定模式(pattern)的key |
示例:
#切换Redis数据库
127.0.0.1:6379> select 0
OK
#检查指定key(此处为name)是否存在于当前数据库中
127.0.0.1:6379> exists name
(integer) 0
#向当前数据库中设置一个key-value键值对
127.0.0.1:6379> set name zhao
OK
#获取指定 key(此处为name)对应的value值。
127.0.0.1:6379> get name
"zhao"
#为指定key(此处为name)设置过期时间
127.0.0.1:6379> expire name 60
(integer) 1
#查看指定key(此处为name)剩余的存活时间
127.0.0.1:6379> ttl name
(integer) 57