日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

redis(nosql数据库)

發布時間:2025/4/14 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 redis(nosql数据库) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
概述 redis是一種nosql數據庫,他的數據是保存在內存中,同時redis可以定時把內存數據同步到磁盤,即可以將數據持久化,并且他比memcached支持更多的數據結構(string,list列表[隊列和棧],set[集合],sorted set[有序集合],hash(hash表))。用于數據不是很重要,變化快的。相關參考文檔:http://redisdoc.com/index.html redis使用場景:
  • 登錄會話存儲:存儲在redis中,與memcached相比,數據不會丟失。
  • 排行榜/計數器:比如一些秀場類的項目,經常會有一些前多少名的主播排名。還有一些文章閱讀量的技術,或者新浪微博的點贊數等。
  • 作為消息隊列:比如celery就是使用redis作為中間人。
  • 當前在線人數:還是之前的秀場例子,會顯示當前系統有多少在線人數。
  • 一些常用的數據緩存:比如我們的BBS論壇,板塊不會經常變化的,但是每次訪問首頁都要從mysql中獲取,可以在redis中緩存起來,不用每次請求數據庫。
  • 把前200篇文章緩存或者評論緩存:一般用戶瀏覽網站,只會瀏覽前面一部分文章或者評論,那么可以把前面200篇文章和對應的評論緩存起來。用戶訪問超過的,就訪問數據庫,并且以后文章超過200篇,則把之前的文章刪除。
  • 好友關系:微博的好友關系使用redis實現。
  • 發布和訂閱功能:可以用來做聊天軟件。
  • redismemcached的比較:
    ? memcached redis
    類型 純內存數據庫 內存磁盤同步數據庫
    數據類型 在定義value時就要固定數據類型 不需要
    虛擬內存 不支持 支持
    過期策略 支持 支持
    存儲數據安全 不支持 可以將數據同步到dump.rdb中
    災難恢復 不支持 可以將磁盤中的數據恢復到內存中
    分布式 支持 主從同步
    訂閱與發布 不支持 支持
    redis安裝啟動 1.安裝:centos7 wget http://download.redis.io/releases/redis-5.0.0.tar.gz tar -zxvf redis-5.0.0.tar.gz cd redis-5.0.0 yum install gcc yum install gcc-c++ make? &&? make install cp src/redis-server /usr/bin/ cp src/redis-cli /usr/bin/ 對文件備份 cp redis.conf redis.conf.bak?? (可省) mv redis.conf?? /etc/redis.conf vim /etc/redis.conf???? daemonize? yes?? (守護進程) 啟動: redis-server /etc/redis.conf 登錄: redis-cli -p 63+79 -h 127.0.0.1??? 默認端口號6379 設置鍵值 設置 將字符串值value關聯到key。如果key已經持有其他值,set命令就覆寫舊值,無視其類型。并且默認的過期時間是永久,即永遠不會過期。鍵值對,一 一對應。
    添加 set key value
    刪除 del key
    取值 get key
    查看當前redis所有的key keys?? *
    設置鍵值對的過期時間
    設置過期時間(已存在鍵值) expire key timeout(單位為秒)
    在設置值的時候,一同指定過期時間 set key value EX timeout setex key timeout value
    查看過期時間 ttl key
    hash,哈希操作 將哈希表key中的域field的值設為value。field 和value 相當于之前的鍵值對,key為一個大的范圍 如果key不存在,一個新的哈希表被創建并進行 HSET操作。如果域 field已經存在于哈希表中,舊值將被覆蓋。(可以理解為學校里的班級中的)
    添加一個新值 hset key field value
    刪除field中的某個field hdel key field
    獲取哈希中的field對應的值 hget key field
    獲取某個哈希中所有的field hkeys key
    獲取某個哈希中所有的值 hvals key
    獲取某個哈希中所有的field和value hgetall key
    獲取哈希中總共的鍵值對(總共的字段) hlen key
    判斷哈希中是否存在某個field hexists key field
    列表(list)操作? (可以存儲重復值)
    在列表左邊添加元素:將值value插入到列表key的表頭。 如果key不存在,一個空列表會被創建并執行lpush操作。當key存在但不是列表類型時,將返回一個錯誤。 lpush key value
    在列表右邊添加元素:將值value插入到列表key的表尾。 如果key不存在,一個空列表會被創建并執行RPUSH操作。當key存在但不是列表類型時,返回一個錯誤。 rpush key value
    查看列表中的元素: 返回列表key中指定區間內的元素,區間以偏移量start和stop指定,如果要左邊的第一個到最后的一個? 0? -1 (在計算機中意味著一個循環) 從左往右數序號是從零開始數的 從右往左數序號是從-1 -2 -3 這樣數的 ? lrange key start stop
    指定返回第幾個元素:指定取值 lindex key index
    獲取列表中的元素個數: llen key
    移除并返回列表key的頭元素:從左往右取 ? lpop key
    移除并返回列表的尾元素:從右往左取 rpop key
    刪除指定的元素: lrem key count value
    根據count 的值,刪除列表中相應個數的value的元素,count的值可以是以下幾種: count > 0:從表頭開始向表尾搜索,移除與value相等的元素,數量為count。 count < 0:從表尾開始向表頭搜索,移除與 value相等的元素,數量為count的絕對值。 count = 0:移除表中所有與value 相等的值。 set集合(集合沒有重復值)的操作
    添加元素 sadd set value1 value2....
    查看元素 smembers set
    移除元素 ? srem set member...
    查看集合中的元素個數 scard set
    獲取多個集合的交集 ? sinter set1 set2
    獲取多個集合的并集 sunion set1 set2
    獲取多個集合的差集 (以最左側的set集合為基礎進行的差集) sdiff set1 set2
    事務操作:Redis事務可以一次執行多個命令,事務具有以下特征:
    • 隔離操作:事務中的所有命令都會序列化、按順序地執行,不會被其他命令打擾。
    • 原子操作:事務中的命令要么全部被執行,要么全部都不執行。
    開啟一個事務:以后執行的所有命令,都在這個事務中執行的。 multi
    執行事務:會將在multi和exec中的操作一并提交 exec
    取消事務:回滾:會將multi后的所有命令取消。 discard
    監視一個或者多個key:監視一個(或多個)key,如果在事務執行之前這個(或這些) key被其他命令所改動,那么事務將被打斷。 watch key...
    取消所有key的監視: unwatch
    發布/訂閱操作:
    • 給某個頻道發布消息:
    publish channel message
    • 訂閱某個頻道的消息:
    subscribe channel 14.持久化 redis提供了兩種數據備份方式,一種是RDB,另外一種是AOF,以下將詳細介紹這兩種備份策略:vim /etc/redis.conf ?? redis搭建主從 1.拷貝一份redis配置文件為slave.conf cp redis.conf slave.conf 2.編輯slave.conf文件 vim slave.conf bind 192.168.7.100? (bind設置為自身ip?? 設置成127.0.0.1不能第三方登錄) slaveof 192.168.7.100 6379??? (從屬于->) port 6380 (端口需不一致) redis-server?? redis.conf?? 啟動主 redis-server?? slave.conf 啟動從 ?注:同一臺機器搭建,端口號不能相同,需要更改端口號,不同機器不需要 redis集群 redis集群我這里部署在一個機器上 創建6個redis配置文件 mkdir conf touch 7000.conf 7001.conf 7002.conf 7003.conf 7004.conf 7005.conf vim 7000.conf?? #編輯文件并且把如下內容拷貝進去? 或者cp 7000.conf 700{1..5}.conf (剩下的文件也是如此,把以下端口號及相應的文件修改即可)
    port 7000?????? #綁定端口 bind 192.168.254.41? #綁定對外連接提供的ip daemonize yes?????????? #開啟守護進程 pidfile 7000.pid????????? #進程文件名 cluster-enabled yes??? #是否是集群 cluster-config-file 7000_node.conf??? #集群配置文件 cluster-node-timeout 15000???????????? #集群連接超時時間 appendonly yes??????????????????? #數據持久化類型
    啟動服務 redis-server 7000.conf redis-server 7001.conf redis-server 7002.conf redis-server 7003.conf redis-server 7004.conf redis-server 7005.conf 注:redis需要的Ruby版本最低是2.2.2,但是CentOS7 yum庫中ruby的版本支持到 2.0.0,可gem 安裝redis需要最低是2.2.2,采用rvm來更新ruby: 安裝RVM(rudy version manage)  1.curl -L get.rvm.io | bash -s stable  2.find / -name rvm -print(此時可能出現問題)  3.如果報錯執行(4,5步)
     4.curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -  5.curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import -
     6.出現如下內容代表成功
    /usr/local/rvm /usr/local/rvm/src/rvm /usr/local/rvm/src/rvm/bin/rvm /usr/local/rvm/src/rvm/lib/rvm /usr/local/rvm/src/rvm/scripts/rvm /usr/local/rvm/bin/rvm /usr/local/rvm/lib/rvm /usr/local/rvm/scripts/rvm 7.使剛安裝的rvm立即生效   source /usr/local/rvm/scripts/rvm 8.安裝一個ruby版本   rvm install 2.4.1 9.使用一個ruby版本   rvm use 2.4.1 10.設置默認ruby版本   rvm use 2.4.1 --default 11.配置集群? (尾部的1 為redis對應的備用機) redis-cli --cluster create 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 127.0.0.1:7007 127.0.0.1:7008 --cluster-replicas 1 ?存入的數據時隨機分布在三個主節點上,三個主機數據不互通,當主機死了,備用機 會頂上去,不影響用戶使用,當主機和備用機都死了,集群失敗

    轉載于:https://www.cnblogs.com/zgngg/p/10513027.html

    總結

    以上是生活随笔為你收集整理的redis(nosql数据库)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。