key-value數據庫-Redis


1.簡介

Redis是完全開源的ANSI C語言編寫、遵守BSD協議,高性能的key-value數據庫。

1.1特點

  • Redis支持數據的持久化,可以將內存中的數據保存在磁盤中,重啟的時候可以再次加載進行使用。
  • Redis不僅僅支持簡單的key-value類型的數據,同時還提供list,set,zset,hash等數據結構的存儲。
  • Redis支持數據的備份,即master-slave模式的數據備份。

1.2優勢

  • 性能極高 – Redis能讀的速度是110000次/s,寫的速度是81000次/s 。
  • 豐富的數據類型 – Redis支持二進制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 數據類型操作。
  • 原子 – Redis的所有操作都是原子性的,意思就是要么成功執行要么失敗完全不執行。單個操作是原子性的。多個操作也支持事務,即原子性,通過MULTI和EXEC指令包起來。

2.安裝

 2.1windows安裝

   在  https://github.com/MicrosoftArchive/redis/releases下下載Redis-x64-3.2.100.zip。

將下載的包移動到c盤下,新建redis文件夾,將壓縮包在redis文件夾下解壓。

打開一個 cmd 窗口 使用cd命令切換目錄到 C:\redis 運行 redis-server.exe redis.windows.conf 。

C:\redis> redis-server.exe redis.windows.conf
                _._
           _.-``__ ''-._ _.-`` `. `_. ''-._ Redis 3.2.100 (00000000/0) 64 bit .-`` .-```. ```\/ _.,_ ''-._ ( ' , .-` | `, ) Running in standalone mode |`-._`-...-` __...-.``-._|'` _.-'| Port: 6379 | `-._ `._ / _.-' | PID: 11604 `-._ `-._ `-./ _.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | http://redis.io `-._ `-._`-.__.-'_.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | `-._ `-._`-.__.-'_.-' _.-' `-._ `-.__.-' _.-' `-._ _.-' `-.__.-'  [11604] 24 Nov 11:04:00.253 # Server started, Redis version 3.2.100

這時候另啟一個cmd窗口,原來的不要關閉,不然就無法訪問服務端了。

切換到redis目錄下運行 redis-cli.exe -h 127.0.0.1 -p 6379 。

設置鍵值對 set myKey abc

取出鍵值對 get myKey

3.配置

3.1獲取配置

 #CONFIG GET *

3.2便捷配置

#CONFIG SET loglevel "notice"

4.數據類型

Redis支持五種數據類型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

5.命令

 5.1基本命令

啟動redis客戶端:redis-cli

檢測redis服務是否啟動:ping  -----》返回pong

 連接遠程:redis-cli -h 127.0.0.1 -p 6379 -a "mypass"

 5.2鍵(key)

 增:SET keyname redis  ---key后面跟key的名稱和key的值

 刪:del keyname

 改:EXPIRE yhkey 60  ---修改key的過期時間、EXPIRE以秒計算、  PEXPIRE 以毫秒計算   

       ttl myname -----修改key永不過期

       rename key yhkey9

查:keys * 查詢所有key

      keys  yh* 過濾出包含yh的key

      exists keyname  判斷key是否存在

       pttl mekey查找key的剩余時間

 5.3Redis-String

增:SET keyname2 "hello myname is yaohong, what is your name?"

查:GET keyname2

截取字符串:GETRANGE keyname2 2 14

同時獲取多個字符串:MGET yhkey1 yhkey3

 5.4Redis-Hash

增:hmset(同時將多個file-value設置到hash表中)、hget

刪:hdel

查:hget、hgetall、hkey獲取hash表中所有域(file)、

  hmget myhash file1 file2 file3(返回哈希表中,一個或多個給定字段的值)

      hvals獲取哈希表中所有值

 判:hexists 判斷是否存在

       hlen獲取file個數

5.5Redis-List

Redis列表是簡單的字符串列表,按照插入順序排序。你可以添加一個元素到列表的頭部(左邊)或者尾部(右邊)

增:lpush(頭部插入元素)、rpush(尾部插入元素)

刪:lpop(移除列表第一個元素)、rpop(移除列表最后一個元素)、lrem keyname count value(count大於0從頭部開始刪除value元素)

查:llen(獲取列表長度)、lreng key start stop(獲取start到stop的元素)

改:lset、rset

5.6Redis-Set

增:sadd、

      sunionstore  myset myset1 myset2  命令將給定集合的並集存儲在指定的集合 myset中

刪:spop移除集合中隨機數

      srem按值移除集合中元素

查:smembers、scard(獲取成員數)、

      sdiff(列出第一個集合擁有,第二個集合沒有的元素)、

      sdiffstore(將第一個集合擁有,第二個集合沒有的元素保存到第三個集合中)、

      sinter(列出兩個集合的交集)

      smembers列出集合所有成員

改:smove  myset1 myset2 "key1"   將key1從myset1移到myset2

判:sismember 判斷元素是否是key的成員

5.7Redis-ZSet

Redis 有序集合和集合一樣也是string類型元素的集合,且不允許重復的成員。

增:zadd keyname scoren value

刪:zrem keyname nember 移除有序集合中的一個或多個成員

      zremrangebylex key min max 移除有序集合中給定的字典區間的所有成員。

      zremrangebyrank key start stop  移除有序集合中給定的排名區間的所有成員

      zremrangebyscore key min max  移除有序集合中給定的分數區間的所有成員

查:zcard 獲取集合的成員數

      zcount key min max 計算在有序集合中指定區間分數的成員數 

      zrange key start stop WITHSCORES 通過索引區間返回有序集合成指定區間內的成員

5.8事務

Redis 事務可以一次執行多個命令

開始事務:MULTI

執行事務:EXEC

取消事務:DISCARD    取消事務,放棄執行事務塊內的所有命令

 監視事務:WATCH      監視一個(或多個) key ,如果在事務執行之前這個(或這些) key 被其他命令所改動,那么事務將被打斷

取消監視:UNWATCH   取消 WATCH 命令對所有 key 的監視。

5.9腳本

Eval 命令使用 Lua 解釋器執行腳本。

5.10服務器

Redis 服務器命令主要是用於管理 redis 服務。

統計參數:INFO

重置 INFO 命令中的某些統計數據:config resetstat

鍵數:dbsize

 刪除所有key:flushall

刪除當前數據庫key:flushdb

異步保存數據到硬盤:save

6.Redis高級

6.1Redis 數據備份與恢復

備份:save

恢復:1:將生成的rdb文件移動到 redis 安裝目錄(執行config get dir)並啟動服務即可

創建 redis 備份文件也可以使用命令 BGSAVE,該命令在后台執行。

6.2Redis 安全

設置密碼:config set requirepass "itnihao"
auth itnihao 獲取密碼:CONFIG get requirepass

6.3Redis 性能測試

6.4Redis 客戶端連接

查看最大連接數:config get maxclients

設置最大連接數:redis-server --maxclients 100000

6.5Redis 管道技術

Redis 管道技術可以在服務端未響應時,客戶端可以繼續向服務端發送請求,並最終一次性讀取所有服務端的響應。

6.6Redis 分區

分區是分割數據到多個Redis實例的處理過程,因此每個實例只保存key的一個子集。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM