【Redis3】Redis数据库的学习与实践—Redis的常用命令及高级应用
keys * keys my* #存在返回1 127.0.0.1:6379 exists name (integer) 1 #不存在返回0 127.0.0.1:6379 exists you (integer) 0 127.0.0.1:6379 del name (integer) 1 127.0.0.1:6379 del you (integer) 0 127.0.0.1:6379 expire name 10 (integer) 1 127.0.0.1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Redis数据库的学习与实践—Redis的常用命令及高级应用
一:Redis的常用命令
Redis提供了丰富的命令对数据库和各种数据库类型进行操作,这些命令可以在Linux终端使用。1:键值相关命令。
(1)keys返回满足给定pattern的所有Key;
(2)exists
确认一个key是否存在;
(3)del
删除一个key;
(4)expire
设置一个key的过期时间;
(5)move
将当前数据库中的key转移到其他数据库当中;
(6)persist
移除给定key的过期时间;
(7)randomkey
随机返回key空间的一个key;
(8)rename
重命名key;
(9)type
返回值的类型。
2:服务器相关命令。
(1)ping测试连接是否存活;
(2)echo
在命令行打印内容;
(3)select
选择数据库,Redis数据库编号从0~15,我们可以选择任意一个数据库来进行数据的存取;
(4)quit
退出连接;
(5)dbsize
(6)info
redis服务器的信息;
(7)configget
实时转储收到的请求,返回相关配置的参数;
(8)flushdb
删除当前选择数据库中的所有key;
(9)flushall
删除所有数据库中的所有key;
二:Redis高级实用特性
(1)安全性
设置客户端连接后进行任何其他指定前需要使用的密码。警告:因为redis速度相当快,所以在一台比较好的服务器下,一个外部的用户可以在一秒钟进行150k次的密码尝试,这意味着你需要指定非常非常强大的密码来防止暴力破解。
(2)主从复制
Redis主从复制配置和使用都非常简单。通过主从复制可以允许多个slave server拥有和master server 相同的数据库副本。
特点:
Master可以拥有多个slave;
多个slave可以连接同一个master,还可以连接到其他slave;
主从复制不会阻塞master,在同步数据时,master可以继续处理client请求;
提高系统的伸缩性。
主从复制过程:
Slave与master建立连接,发送sync同步命令
Master会启动一个后台进程,将数据库快照保存到文件中,同时master住进程会开始收集新的写命令并缓存。
后台完成保存后,就将此文件发送给slave
Slave将此文件保存到硬盘上
配置主从服务器
在slave的配置文件(redis.conf)中加入以下配置:
slaveof 192.168.1.1 6379 #指定master的ip和端口 masterauth lamp #这是主机的密码 #设置完成后,可以通过info命令来查看主从信息(role:master/slave) |
Redis对事务的支持目前还比较简单。Redis只能保证一个client发起的事务中的命令可以连续的执行,而中间不会插入其他client的命令。当一个client在一个连接中发出multi命令时,这个连接会进入一个事务上下文,该连接后续的命令不会立即执行,而是先放到一个队列中,当执行exec命令时,redis会顺序的执行队列中的所有命令。
简单事务处理:
127.0.0.1:6379> get age "30" 127.0.0.1:6379> multi OK 127.0.0.1:6379> set age 10 QUEUED 127.0.0.1:6379> set age 20 QUEUED 127.0.0.1:6379> exec 1) OK 2) OK 127.0.0.1:6379> get age "20" |
取消一个事务:
127.0.0.1:6379> get age "20" 127.0.0.1:6379> multi OK 127.0.0.1:6379> set age 30 QUEUED 127.0.0.1:6379> set age 50 QUEUED 127.0.0.1:6379> discard OK 127.0.0.1:6379> get age "20" |
Redis事务的缺陷,通常来说,事务中的每一个事务都要执行成功,事务里的所有操作才会生效。但是Redis事务的缺陷就是,当事务中的操作,有一个没有成功的时候,另外一个操作照样成功。这样事务在某一个操作错误的时候,没有了回滚的机制,这是有待改进的地方。
乐观锁:复杂事务控制
大多是基于数据版本(version)的记录机制实现的。即为数据增加一个版本表示,在基于数据库表的版本解决方案中,一般是通过为数据库表添加一个“version”字段来实现读取出数据时,将此版本号一同读出,之后更新时,对此版本号加1。此时,将提交数据的版本号与数据库表对应记录的当前版本号进行比对,如果提交的数据版本号大于数据库当前版本号,则予以更新,否则认为是过期数据。
Redis乐观锁实例:
假设有一个age的key,我们开2个session来对age进行赋值操作,我们来看一下结果。
#第一步session1 127.0.0.1:6379> get age "20" 127.0.0.1:6379> watch age OK 127.0.0.1:6379> multi OK |
#第二步session2 127.0.0.1:6379> set age 30 OK 127.0.0.1:6379> get age "30" |
#第三步session1 127.0.0.1:6379> set age 20 QUEUED 127.0.0.1:6379> exec (nil) 127.0.0.1:6379> get age "30" |
Watch命令会见识给定的key,当exec时,如果监视的key从调用watch后发生过变化,则整个事务会失败。也可以调用watch多次监视多个key。这样就可以对指定的key加乐观锁了。注意watch的key是对整个连接有效的,事务也一样。如果连接断开,监视和事务都会被自动清除。当然了exec,discard,unwatch命令都会清除连接中的所有监视。
(4)持久化机制Redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到硬盘来保证持久化。
Redis支持两种持久化方式:snapshotting(快照)也是默认方式;Append-only file(缩写aof)的方式。
(5)发布订阅消息发布订阅(pub/sub)是一种消息通信模式,主要的目的是接触消息发布者和消息订阅者之间的耦合,Redis作为一个pub/sub的server,在订阅者和发布者之间起到了消息路由的功能。订阅者可以通过subscribe和psubscribe命令向redis server订阅自己感兴趣的消息类型,redis将信息类型称为通道(channel)。当发布者通过publish命令向redis server发送特定类型的信息时,订阅该信息类型的全部client都会受到此消息。
(6)虚拟内存的使用Redis的虚拟内存与操作系统的虚拟内存不是一回事,但是思路和目的都是相同的。都是暂时把不经常访问的数据从内存交换到磁盘中,从而腾出宝贵的内存空间用于其他需要访问的数据。尤其是对于redis这样的内存数据库,内存总是不够用的。除了可以将数据分割到多个redisserver外。另外能够提高数据库容量的办法就是使用虚拟内存把那些不经常访问的数据交换到磁盘上。
Vm-enabled yes #开启vm功能 Vm-swap-file /tmp/redis.swap #交换出来的value保存的文件路径 Vm-max-memory 1000000 #redis使用的最大内存上限 Vm-page-size 32 #每个页面的大小32字节 Vm-pages 13417728 #最多使用多少页面 Vm-max-threads4 #用于执行value对象换入患处的工作线程数量 注:Redis系列博客均是结合兄弟连Redis学习视频的笔记和自己的实践总结而成。 |

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Redis集群模式通過分片將Redis實例部署到多個服務器,提高可擴展性和可用性。搭建步驟如下:創建奇數個Redis實例,端口不同;創建3個sentinel實例,監控Redis實例並進行故障轉移;配置sentinel配置文件,添加監控Redis實例信息和故障轉移設置;配置Redis實例配置文件,啟用集群模式並指定集群信息文件路徑;創建nodes.conf文件,包含各Redis實例的信息;啟動集群,執行create命令創建集群並指定副本數量;登錄集群執行CLUSTER INFO命令驗證集群狀態;使

MySQL是一種開源的關係型數據庫管理系統,主要用於快速、可靠地存儲和檢索數據。其工作原理包括客戶端請求、查詢解析、執行查詢和返回結果。使用示例包括創建表、插入和查詢數據,以及高級功能如JOIN操作。常見錯誤涉及SQL語法、數據類型和權限問題,優化建議包括使用索引、優化查詢和分錶分區。

如何清空 Redis 數據:使用 FLUSHALL 命令清除所有鍵值。使用 FLUSHDB 命令清除當前選定數據庫的鍵值。使用 SELECT 切換數據庫,再使用 FLUSHDB 清除多個數據庫。使用 DEL 命令刪除特定鍵。使用 redis-cli 工具清空數據。

要從 Redis 讀取隊列,需要獲取隊列名稱、使用 LPOP 命令讀取元素,並處理空隊列。具體步驟如下:獲取隊列名稱:以 "queue:" 前綴命名,如 "queue:my-queue"。使用 LPOP 命令:從隊列頭部彈出元素並返回其值,如 LPOP queue:my-queue。處理空隊列:如果隊列為空,LPOP 返回 nil,可先檢查隊列是否存在再讀取元素。

選擇MySQL的原因是其性能、可靠性、易用性和社區支持。 1.MySQL提供高效的數據存儲和檢索功能,支持多種數據類型和高級查詢操作。 2.採用客戶端-服務器架構和多種存儲引擎,支持事務和查詢優化。 3.易於使用,支持多種操作系統和編程語言。 4.擁有強大的社區支持,提供豐富的資源和解決方案。

在CentOS系統上,您可以通過修改Redis配置文件或使用Redis命令來限制Lua腳本的執行時間,從而防止惡意腳本佔用過多資源。方法一:修改Redis配置文件定位Redis配置文件:Redis配置文件通常位於/etc/redis/redis.conf。編輯配置文件:使用文本編輯器(例如vi或nano)打開配置文件:sudovi/etc/redis/redis.conf設置Lua腳本執行時間限制:在配置文件中添加或修改以下行,設置Lua腳本的最大執行時間(單位:毫秒)

使用 Redis 命令行工具 (redis-cli) 可通過以下步驟管理和操作 Redis:連接到服務器,指定地址和端口。使用命令名稱和參數向服務器發送命令。使用 HELP 命令查看特定命令的幫助信息。使用 QUIT 命令退出命令行工具。

Redis數據過期策略有兩種:定期刪除:定期掃描刪除過期鍵,可通過 expired-time-cap-remove-count、expired-time-cap-remove-delay 參數設置。惰性刪除:僅在讀取或寫入鍵時檢查刪除過期鍵,可通過 lazyfree-lazy-eviction、lazyfree-lazy-expire、lazyfree-lazy-user-del 參數設置。
