搜尋
首頁資料庫mysql教程【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

  • 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:6379> get name
  • "inter"
  • 127.0.0.1:6379> get name
  • "inter"
  • 127.0.0.1:6379> get name
  • "inter"
  • 127.0.0.1:6379> get name
  • (nil)
  • 127.0.0.1:6379> select 0
  • OK
  • 127.0.0.1:6379> set sex boy
  • OK
  • 127.0.0.1:6379> get sex
  • "boy"
  • 127.0.0.1:6379> move sex 1
  • (integer) 1
  • 127.0.0.1:6379> get sex
  • (nil)
  • 127.0.0.1:6379> select 1
  • OK
  • 127.0.0.1:6379[1]> get sex
  • "boy"
  • 127.0.0.1:6379> expire name 300
  • (integer) 1
  • 127.0.0.1:6379> ttl name
  • (integer) 296
  • 127.0.0.1:6379> persist name
  • (integer) 1
  • 127.0.0.1:6379> ttl name
  • (integer) -1
  • 127.0.0.1:6379> randomkey
  • "name"
  • 127.0.0.1:6379> set name hello
  • OK
  • 127.0.0.1:6379> rename name you
  • OK
  • 127.0.0.1:6379> get you
  • "hello"
  • 127.0.0.1:6379> type you
  • string
  • #输入ping返回pong,说明网络连接成功
  • #返回could not connect to Redis at 127.0.0.1:6379:Connection refused 说明网络连接不成功
  • 127.0.0.1:6379> ping
  • PONG
  • 127.0.0.1:6379> echo you
  • "you"
  • 127.0.0.1:6379> select 10
  • OK
  • 127.0.0.1:6379[10]>
  • 127.0.0.1:6379> quit
  • djy@ubuntu:~/toolkit/redis/src$
  • 127.0.0.1:6379> dbsize
  • (integer) 2
  • 127.0.0.1:6379>
  • 127.0.0.1:6379> info
  • # Server
  • redis_version:2.8.13
  • redis_git_sha1:00000000
  • redis_git_dirty:0
  • redis_build_id:b762f6d0aafec306
  • redis_mode:standalone
  • os:Linux 3.8.0-19-generic x86_64
  • arch_bits:64
  • multiplexing_api:epoll
  • gcc_version:4.7.3
  • process_id:28321
  • run_id:8ebdbe81c7153e1e6bd0979d365ca9c8480f8c9f
  • tcp_port:6379
  • uptime_in_seconds:2155
  • uptime_in_days:0
  • hz:10
  • lru_clock:15851433
  • config_file:/home/djy/toolkit/redis/redis.conf
  • 127.0.0.1:6379> config get save
  • 1) "save"
  • 2) "900 1 300 10 60 10000"
  • 127.0.0.1:6379>
  • 127.0.0.1:6379> keys *
  • 1) "name"
  • 2) "you"
  • 3) "sex"
  • 4) "new_name"
  • 127.0.0.1:6379> flushdb
  • OK
  • 127.0.0.1:6379> keys *
  • (empty list or set)
  • #进入redis文件夹,修改redis.conf文件
  • #requirepass foobared
  • requirepass djy
  •  
  • #之后进入客户端,操作redis数据库的时候,要进行授权操作
  • auth djy
  • #或者在进入客户端的时候,输入
  • redis-cli –a djy

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)

(3)事务处理

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学习视频的笔记和自己的实践总结而成。

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
MySQL:初學者的基本技能MySQL:初學者的基本技能Apr 18, 2025 am 12:24 AM

MySQL適合初學者學習數據庫技能。 1.安裝MySQL服務器和客戶端工具。 2.理解基本SQL查詢,如SELECT。 3.掌握數據操作:創建表、插入、更新、刪除數據。 4.學習高級技巧:子查詢和窗口函數。 5.調試和優化:檢查語法、使用索引、避免SELECT*,並使用LIMIT。

MySQL:結構化數據和關係數據庫MySQL:結構化數據和關係數據庫Apr 18, 2025 am 12:22 AM

MySQL通過表結構和SQL查詢高效管理結構化數據,並通過外鍵實現表間關係。 1.創建表時定義數據格式和類型。 2.使用外鍵建立表間關係。 3.通過索引和查詢優化提高性能。 4.定期備份和監控數據庫確保數據安全和性能優化。

MySQL:解釋的關鍵功能和功能MySQL:解釋的關鍵功能和功能Apr 18, 2025 am 12:17 AM

MySQL是一個開源的關係型數據庫管理系統,廣泛應用於Web開發。它的關鍵特性包括:1.支持多種存儲引擎,如InnoDB和MyISAM,適用於不同場景;2.提供主從復制功能,利於負載均衡和數據備份;3.通過查詢優化和索引使用提高查詢效率。

SQL的目的:與MySQL數據庫進行交互SQL的目的:與MySQL數據庫進行交互Apr 18, 2025 am 12:12 AM

SQL用於與MySQL數據庫交互,實現數據的增、刪、改、查及數據庫設計。 1)SQL通過SELECT、INSERT、UPDATE、DELETE語句進行數據操作;2)使用CREATE、ALTER、DROP語句進行數據庫設計和管理;3)複雜查詢和數據分析通過SQL實現,提升業務決策效率。

初學者的MySQL:開始數據庫管理初學者的MySQL:開始數據庫管理Apr 18, 2025 am 12:10 AM

MySQL的基本操作包括創建數據庫、表格,及使用SQL進行數據的CRUD操作。 1.創建數據庫:CREATEDATABASEmy_first_db;2.創建表格:CREATETABLEbooks(idINTAUTO_INCREMENTPRIMARYKEY,titleVARCHAR(100)NOTNULL,authorVARCHAR(100)NOTNULL,published_yearINT);3.插入數據:INSERTINTObooks(title,author,published_year)VA

MySQL的角色:Web應用程序中的數據庫MySQL的角色:Web應用程序中的數據庫Apr 17, 2025 am 12:23 AM

MySQL在Web應用中的主要作用是存儲和管理數據。 1.MySQL高效處理用戶信息、產品目錄和交易記錄等數據。 2.通過SQL查詢,開發者能從數據庫提取信息生成動態內容。 3.MySQL基於客戶端-服務器模型工作,確保查詢速度可接受。

mysql:構建您的第一個數據庫mysql:構建您的第一個數據庫Apr 17, 2025 am 12:22 AM

構建MySQL數據庫的步驟包括:1.創建數據庫和表,2.插入數據,3.進行查詢。首先,使用CREATEDATABASE和CREATETABLE語句創建數據庫和表,然後用INSERTINTO語句插入數據,最後用SELECT語句查詢數據。

MySQL:一種對數據存儲的初學者友好方法MySQL:一種對數據存儲的初學者友好方法Apr 17, 2025 am 12:21 AM

MySQL適合初學者,因為它易用且功能強大。 1.MySQL是關係型數據庫,使用SQL進行CRUD操作。 2.安裝簡單,需配置root用戶密碼。 3.使用INSERT、UPDATE、DELETE、SELECT進行數據操作。 4.複雜查詢可使用ORDERBY、WHERE和JOIN。 5.調試需檢查語法,使用EXPLAIN分析查詢。 6.優化建議包括使用索引、選擇合適數據類型和良好編程習慣。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器