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