Redis數據庫的安裝與基礎操作


Redis數據庫

  • Redis簡介

    • Redis (Remote Dictionary Server)是用C語言編寫的開源數據庫,可以將數據放入內存,也可以持久化存儲到磁盤
    • Redis不同於傳統關系型數據庫,以key-value的形式存儲數據,value可以為string字符串、list列表、set集合、sorted sets有序集合、hash哈希等多種類型
    • Redis早期由意大利人Salvatore Sanfilippo開發(網名antirez),2010年作者受雇於VMWARE,2013年由子公司Pivotal Software支持,從2015年起,由Redis實驗室支持其開發工作
    • Redis將數據放置與內存,性能優越,官方給的測試結果:讀取數據速度是110000次/s,寫入速度為81000次/s
    • Redis開源免費,提供多種編程語言接口,包括主流的:java,python,php,c#等幾十種編程語言,遵從BSD協定
  • 適用於:

    • 緩沖高並發讀寫的實時數據
    • 網站最新信息列表,用戶點擊計數器,各類信息的實時排名
  • 不適用於:

    • 對事務要求高的業務
    • 需要使用SQL的業務場景
  • Redis的安裝

    • 下載安裝包

      官網源碼包下載

      pkgs download rpm包下載

    • 上傳安裝包至服務器

      image-20191210135652054

    • 安裝依賴及redis軟件

      image-20191210135744263

    • 相關文件位置

      • 配置文件位置:/etc/redis.conf
      • 數據文件位置:/var/lib/redis
      • 默認日志文件位置:/var/log/redis/redis.log
    • 修改配置文,允許遠程連接

      image-20191210140006638

      image-20191210140051029

    • 啟動服務

      image-20191210140150813

    • 關閉服務

      image-20191210140222017

    • 本地連接redis

      image-20191210140306597

    • 遠程連接

      image-20191210141753913

      redis-cli -h 192.168.10.40
      

      image-20191210141816662

      redis-cli -h 192.168.10.40 -p 6379
      
    • 使用圖形化工具連接redis

      下載地址-收費

      安裝后打開並進行連接

      image-20191210142637829

      image-20191210142701727

      默認開啟16個庫,可以在配置文件中使用參數databases指定默認開啟的庫的數量

  • redis中常用數據類型

    • strings

      • value值是字符串
    • Lists

      • value值是一系列string字符串的集合,按照插入的順序排列
    • Sets

      • value值是一系列string字符串元素的集合,不能有重復值,不排序
    • Sorted sets

      • value值是一系列string字符串元素的集合,但是集合中的每個元素都關聯一個浮點數值,叫做score,集合元素按照score排序,比較容易實現范圍查找,如:列出集合元素中的前10或后10名
    • Hashes

      • value值是多個鍵值對(field:value),鍵值對由field和其對應的value組成類似於編程語言中的hash數組
  • redis中的key

    • redis的key用來定位數據,可以想象成引用數據的標簽
    • key在當前數據庫中不能有重值(默認16個數據庫,數據庫可以想象成分類目錄,一般情況一個業務系統的數據放在一個數據庫中)
    • key的名字不宜過長(超過1024),否則影響性能
    • key最多可以存512M
  • String 字符串

    image-20191210144532399

    set mykey values #設置key為mykey,value為values的鍵值對
     get mykey #獲取mykey對應的value值
    
    • incr 遞增 incrby 指定遞增步長

      image-20191210145119451

    • decr 遞減 decrby 指定遞減步長

      image-20191210145238183

    • mset 一次性為多個key賦值,mget 一次性獲取多個key的值

      image-20191210145402047

    • del 刪除鍵值對,可同時刪除多個

      image-20191210145449846

    • exists 判斷指定的key是否存在,存在返回1,不存在返回0

      image-20191210145546127

    • typer 查看指定key對應的value的數據類型

      image-20191210145657167

    • expire 設置key過期時長(單位:秒),ttl 查看剩余生命周期(單位:秒),超過設置時長后會自動清除指定的key

      image-20191210145807089

  • Lists 列表

    • lpush 從左側添加元素到列表中(新添加的元素位於列表首部)

      image-20191210150100692

      image-20191210161421350

    • lrange 從左側顯示列表中的元素

      image-20191210150721592

      lrange mylist 0 -1 #顯示列表中的元素 從0到-1,-1為最后一位
      
    • llen 獲得列表中元素的個數

      image-20191210151535811

    • rpush 從右側添加元素到列表(新添加的元素位於列表尾部)

      image-20191210151814888

      image-20191210152254396

    • rpop 刪除右側一個元素(尾部刪除)

      image-20191210152401092

    • lpop 刪除左側一個元素(首部刪除)
      image-20191210152537977

    • linsert 將元素插入指定位置(after位於指定元素后,defore位於指定元素前)

      image-20191210152906378

      image-20191210153618469

    • lset 修改指定位置元素的值(坐標從0開始)

      image-20191210154022516

    • lrem 刪除指定的value

      image-20191210154644852

      image-20191210154722049

      image-20191210154750939

      lrem mylist1 0 "a"
      lrem mylist1 1 "c"
      lrem mylist1 -1 "hello"
      #格式:lrem key count value
      #count 
      	#為0 刪除所有value
      	#大於0 從左刪除count個value(從首部)
      	#小於0 從右刪除count個value(從尾部)
      
    • ltrim保留指定范圍內的元素,其他的刪除

      image-20191210155227254

  • Sets 集合

    • sadd設置key對應的value集合

      image-20191210161400308

    • smembers 查看指定key的集合中的成員

      image-20191210161545987

      注:集合成員不會按照插入的順序顯示

    • sismember 查看指定元素是否屬於指定的集合,1為真,0為假

      image-20191210161922024

    • sinter查看多個集合的交集

      image-20191210162121934

    • sdiff 查看多個集合中的差集

      image-20191210162231316

      注:順序不同差集也不相同,那個集合在前顯示那個集合中有而其他集合中不存在的元素

    • sunion 查看多個集合的合集

      image-20191210162440824

    • scard 查看集合中元素的個數

      image-20191210162522121

  • Sorted sets 有序集合

    • zadd 設置key對應的value的有序集合

      image-20191210163934997

       zadd myzset 1 a 2 b 3 c
       #格式:zadd key [NX|XX] [CH] [INCR] score member [score member ...]
       #排序按照score從小到大排序,當score相同時比較member
      
    • 查看集合中的元素

      image-20191210164628367

    • 顯示集合中的元素及score

      image-20191210170106028

    • zrevrange顯示有序集合的元素(score從大到小)

      image-20191210170221754

      image-20191210170238129

    • 修改score值

      image-20191210170459778

  • hashes 哈希

    • hmset 將多個field與value的鍵值對寫入到指定key中,Redis 中每個 hash 可以存儲 2的32次方-1個鍵值對(40多億)

      image-20191210171406922

      hmset users:10 uid 15 uname zhangsan password 1234 birth 1990-10-10 
      #語法格式:hmset key field value [field value ...]
      
    • hget 獲取指定key中指定field對應的value

      image-20191210171614397

    • hmget 獲取指定key中指定的多個field對應的value

      image-20191210185836474

    • hgetall 獲取指定key中所有field和value鍵值對數據

      image-20191210185941987

    • hlen 獲取指定key中所有field和value鍵值對的數量

      image-20191210190119108

    • hkeys 獲取指定key中所有field數據

      image-20191210190239580

    • hvals 獲取指定key中所有field對應value數據

      image-20191210190315094

    • hdel 刪除指定key中多個field及其對應value數據

      image-20191210190433951

    • hset 修改key中一個field對應的值

      image-20191210190524351

    • hmset 修改key中一個field或多個field對應的值

      image-20191210190710545

  • 其他常用命令

    • flushdb清空當前數據庫的所有值(慎用)

      image-20191210190820544

    • select 切換數據庫

      image-20191210190854114

      注:端口號后中括號內的數值標識了當前所處的數據庫

    • scan 查看當前數據庫中所有的key

      image-20191210192924418

      image-20191210193400440

      scan 0
      scan 0 match * count 3
      scan 3 match * count 3
      #語法格式 scan cursor [MATH pattern] [COUNT count]
      #cursor 游標
      #SCAN命令是一個基於游標的迭代器
      #游標為 0 時,服務器將開始一次新的迭代, 返回值為 0 的游標時, 表示迭代已結束
      #可以使用返回的游標作為繼續下一次迭代顯示的游標
      #MATH 匹配模式 * 匹配所有
      #count 指定顯示的數量
      


免責聲明!

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



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