redis入門

longsihua2003發表於2024-09-09

redis入門

Nosql與sql

Nosql是什麼

NoSQL,指的是非關係型的資料庫。NoSQL有時也稱作Not Only SQL的縮寫,是對不同於傳統的關係型資料庫的資料庫管理系統的統稱。

sql是什麼

sql指的是關係型資料庫。關係型資料庫要滿足4大特徵,也就是我們常提的ACID原則(A原子性、C一致性、I獨立性、D永續性)

sql與nosql

  1. NoSQL用於超大規模資料的儲存。(例如谷歌或Facebook每天為他們的使用者收集萬億位元的資料)。這些型別的資料儲存不需要固定的模式,無需多餘操作就可以橫向擴充套件。
  2. sql支援關係複雜的資料查詢,nosql反之
  3. sql支援事務性,nosql不支援

典型的nosql資料庫

Mongodb、redis、Hbase hadoop

redis

redis介紹

Redis 是一個開源(BSD許可)的,記憶體中的資料結構儲存系統,它可以用作資料庫、快取和訊息中介軟體
redis是c語言編寫的,支援資料持久化,是key-value型別資料庫。
應用在快取,佇列系統中
redis支援資料備份,也就是master-slave模式

redis優勢

  1. 效能高,讀取速度10萬次每秒(還可以透過叢集再度提升)
  2. 寫入速度8萬次每秒
  3. 所有操作支援原子性

應用情況

  1. 用作快取資料庫,資料放在記憶體中
  2. 替代某些場景下的mysql,如社交類app
  3. 大型系統中,可以儲存session資訊,購物車訂單

img

redis安裝

存在透過yum和原始碼安裝兩種情況,這裡直接寫執行步驟,不做贅述。

    # 1.yum安裝
    # 檢視redis版本
    yum list redis
    # 安裝redis
    yum install redis
    # 啟動redis
    systemctl start redis

    # 2. 原始碼安裝
    # 下載redis原始碼
    wget http://download.redis.io/releases/redis-4.0.10.tar.gz
    # 解壓縮
    tar -zxf redis-4.0.10.tar.gz
    # 編譯安裝
    make && make install
    # 安裝到指定目錄,預設在redis目錄下的src底下
    # 下面自己配置環境變數
     echo PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/vimx/bin:/root/binopt/redis-4.0.10/src" >> /etc/profile
    # 執行以完成安裝
    [root@localhost src]# redis-server --version
    Redis server v=4.0.10 sha=00000000:0 malloc=jemalloc-4.0.3 bits=64 build=92305af7dfef4310

redis可執行檔案

    # redis的客戶端
    ./redis-cli 
    # redis的服務端
    ./redis-server
    # 用於叢集管理
    ./redis-sentinel
    # redis效能測試工具
    ./redis-benchmark
    # 用於修復出問題的dump.rdb檔案
    ./redis-check-dump
    # 用於修復出問題的AOF檔案
    ./redis-check-aof

redis基本配置檔案

    # 如果使用原始碼安裝的話,那麼配置檔案目錄在src下的redis.conf。
    # redis預設不會呼叫配置檔案啟動。需要指定配置檔案
    redis-server redis.conf

    # 重要配置
    bind 127.0.0.1 # 配置可連線的ip
    port 6379 # 配置redis啟動埠
    daemonize yes # 守護程序方式執行(後臺執行)
    dbfilename dump.rdb # 資料檔案指定
    dir /var/lib/redis/ # 資料檔案存放路徑
    logfile /var/log/redis/redis-server.log # 日誌檔案
    slaveof # 主從複製
    requirepass password # 密碼

redis支援的資料型別

redis是一種高階的key:values儲存系統。支援下面5種資料型別:

  • 字串(strings)
  • 雜湊(hashes)
  • 列表(lists)
  • 集合(sets)
  • 有序集合(sorted sets)

基本命令

    # 進入redis服務端
    redis-cli
    # 接下來可以執行redis命令
    ping # 回覆pong說明通了
    keys * # 檢視所有的鍵
    set key value # 設定一個鍵值
    expire key # 給key加上過期時間
    get key  # 獲取一個鍵的值
    type key # 顯示value的型別
    ttl key # 檢視key的過期時間。(-1表示永不過期,-2表示已過期)
    persist key # 取消key的過期時間(對過期的key沒用)
    exists key # 監測key是否存在
    del key # 刪除key

    dbsize # 計算key的數量
    flushall # 刪除所有庫的所有鍵
    flushdb # 刪除當前資料庫的所有鍵

各資料型別常用命令

詳細:詳細命令可以參考菜鳥教程py魚部落格隨筆

    # string
    set key # 設定key
    get  key # 獲取key
    append key value # 追加string
    mset  key1 value1 key2 value2 # 設定多個鍵值對
    mget  key1 key2 key3 # 獲取多個鍵值對
    del key # 刪除key
    incr key # 遞增+1
    decr key # 遞減-1

    # list
    lpush 列表名 value1 value2 # 從左一個一個插入
    rpush 列表名 value1 value2 # 從右一個一個插入
    lrange 列表名 第一個切片值 第二個切片值 # 從第一個到第二個之間的列表值(如 lrange paidui 0 -1 拿列表所有的值)
    ltrim 列表名 擷取開頭 擷取結尾 # 將列表切片覆蓋原列表,注意取前也取後
    lpop 列表名 # 從左刪
    rpop 列表名 # 從右刪

    # set
    sadd/srem key value1 value2  # 新增/刪除 元素
    sismember key value  # 判斷是否為set的一個元素
    smembers  key  # 返回集合所有的成員
    sdiff key1 key2 # 返回一個集合和其他集合的差異(差集key1-key2)
    sinter  key1 key2 # 返回幾個集合的交集(交集)
    sunion  key1 key2 # 返回幾個集合的並集(並集)

    # 雜湊(dict)
    hset key field value # 設定雜湊值(一個)
    hget key field  # 獲取雜湊值
    hmset key field1 value1 field2 value2 # 設定多對雜湊值
    hmget key field1 field2 # 獲取多對雜湊值
    hsetnx key field value # 如果雜湊已經存在,則不設定(防止覆蓋key)
    hkeys key # 返回所有keys
    hvals key # 返回所有values
    hlen key # 返回雜湊包含域(field)的數量
    hdel key field # 刪除雜湊指定的域(field)
    hexists key field # 判斷是否存在

相關文章