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

歡迎訪問 生活随笔!

生活随笔

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

数据库

NoSQL(2)

發布時間:2025/3/8 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NoSQL(2) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、string list hash結構中,每個至少完成5個命令,包含插入 修改 刪除 查詢,list 和hash還需要增加遍歷的操作命令

1、?Keys相關的命令操作:

(1)?查看key是否存在:

EXISTS name???#判斷該鍵是否存在,存在返回1,否則返回0。

#該鍵并不存在,因此append命令返回當前Value的長度

(2) 添加鍵:

append name 'tom'

#該鍵已經存在,因此返回追加后Value的長度。

(3)?查看key的超時時間:、

ttl name

-1? 表示沒有設置超時時間

(4)?遍歷key:

scan 0?

127.0.0.1:6379> scan 0??# 使用 0 作為游標,開始新的迭代

1) "0"? ? ?# 第一次迭代時返回的游標

2) 1) "name"

(5)?返回key的值的序列化:

Redis DUMP 命令用于序列化給定 key ,并返回被序列化的值。

2、?string類型數據的命令操作:

(1)?設置鍵值:

#設置Key的值為20

Redis 的 Set 是 String 類型的無序集合。集合成員是唯一的,這就意味著集合中不能出現重復的數據。

Redis 中集合是通過哈希表實現的,所以添加,刪除,查找的復雜度都是 O(1)。

集合中最大的成員數為 232?- 1 (4294967295, 每個集合可存儲40多億個成員)。

(2)?讀取鍵值:

Redis Get 命令用于獲取指定 key 的值。如果 key 不存在,返回 nil 。如果key 儲存的值不是字符串類型,返回一個錯誤。

(3)?數值類型自增1:

Redis Incr 命令將 key 中儲存的數字值增一。

如果 key 不存在,那么 key 的值會先被初始化為 0 ,然后再執行 INCR 操作。

如果值包含錯誤的類型,或字符串類型的值不能表示為數字,那么返回一個錯誤。

本操作的值限制在 64 位(bit)有符號數字表示之內。

語法

redis Incr 命令基本語法如下:

redis 127.0.0.1:6379> INCR KEY_NAME

(4)?數值類型自減1:

Redis Decr 命令將 key 中儲存的數字值減一。

如果 key 不存在,那么 key 的值會先被初始化為 0 ,然后再執行 DECR 操作。

如果值包含錯誤的類型,或字符串類型的值不能表示為數字,那么返回一個錯誤。

本操作的值限制在 64 位(bit)有符號數字表示之內。

語法

redis Decr 命令基本語法如下:

redis 127.0.0.1:6379> DECR KEY_NAME

(5)?查看值的長度:

Redis Strlen 命令用于獲取指定 key 所儲存的字符串值的長度。當 key 儲存的不是字符串值時,返回一個錯誤。

語法

redis Strlen 命令基本語法如下:

redis 127.0.0.1:6379> STRLEN KEY_NAME

3、?list類型數據的命令操作:

(1)對列表city插入元素:?beijing hangzhou ?shanghai

lpush city beijing hangzhou ?shanghai

Redis Lpush 命令將一個或多個值插入到列表頭部。 如果 key 不存在,一個空列表會被創建并執行 LPUSH 操作。 當 key 存在但不是列表類型時,返回一個錯誤。

注意:在Redis 2.4版本以前的 LPUSH 命令,都只接受單個 value 值。

語法

redis Lpush 命令基本語法如下:

redis 127.0.0.1:6379> LPUSH KEY_NAME VALUE1.. VALUEN

(2)將列表city里的頭部的元素移除

lpop city

Redis Lpop 命令用于移除并返回列表的第一個元素。

語法

redis Lpop 命令基本語法如下:

redis 127.0.0.1:6379> Lpop KEY_NAME

(3)將age列表的尾部元素移除到home列表的頭部

Redis Rpoplpush 命令用于移除列表的最后一個元素,并將該元素添加到另一個列表并返回。

語法

redis Rpoplpush 命令基本語法如下:

redis 127.0.0.1:6379> RPOPLPUSH SOURCE_KEY_NAME DESTINATION_KEY_NAME

(4)?對一個已存在的列表插入新元素

Redis EXISTS 命令用于檢查給定 key 是否存在。

語法

redis EXISTS 命令基本語法如下:

redis 127.0.0.1:6379> EXISTS KEY_NAME

(5)查看list的值長度

Redis Llen 命令用于返回列表的長度。 如果列表 key 不存在,則 key 被解釋為一個空列表,返回 0 。 如果 key 不是列表類型,返回一個錯誤。

語法

redis Llen 命令基本語法如下:

redis 127.0.0.1:6379> LLEN KEY_NAME

4、?hash類型數據的命令操作:

(1)?設置一個hash表,order表里包括的鍵值信息有:id:1,customer_name:張三

Redis Hset 命令用于為哈希表中的字段賦值 。

如果哈希表不存在,一個新的哈希表被創建并進行 HSET 操作。

如果字段已經存在于哈希表中,舊值將被覆蓋。

語法

redis Hset 命令基本語法如下:

redis 127.0.0.1:6379> HSET KEY_NAME FIELD VALUE

(2)?創建一個hash表,表里的鍵值批量插入

Redis Hmset 命令用于同時將多個 field-value (字段-值)對設置到哈希表中。

此命令會覆蓋哈希表中已存在的字段。

如果哈希表不存在,會創建一個空哈希表,并執行 HMSET 操作。

語法

redis Hmset 命令基本語法如下:

redis 127.0.0.1:6379> HMSET KEY_NAME FIELD1 VALUE1 ...FIELDN VALUEN

(3)?獲取order對應的map的所有key

Redis Hkeys 命令用于獲取哈希表中的所有域(field)。

語法

redis Hkeys 命令基本語法如下:

redis 127.0.0.1:6379> HKEYS key

(4)?獲取order對應的map的鍵值數量

(5)?獲取order表里的id值

2、舉例說明list和hash的應用場景,每個至少一個場景?

List的應用場景:論壇評論、秒殺、消息隊列

Hash的應用場景:java里結構化的信息存儲,例如用戶個人信息(姓名、性別、興趣愛好)用hash結構存儲

3、配置一redis的主從復制

1. 數據冗余:主從復制實現了數據的熱備份,是持久化之外的一種數據冗余方式。

2. 故障恢復:當主節點出現問題時,可以由從節點提供服務,實現快速的故障恢復;實際上是一種服務的冗 余。

3. 負載均衡:在主從復制的基礎上,配合讀寫分離,可以由主節點提供寫服務,由從節點提供讀服務(即寫 Redis數據時應用連接主節點,讀Redis數據時應用連接從節點),分擔服務器負載;尤其是在寫少讀多的場 景下,通過多個從節點分擔讀負載,可以大大提高Redis服務器的并發量。

4. 讀寫分離:可以用于實現讀寫分離,主庫寫、從庫讀,讀寫分離不僅可以提高服務器的負載能力,同時可 根據需求的變化,改變從庫的數量;

5. 高可用基石:除了上述作用以外,主從復制還是哨兵和集群能夠實施的基礎,因此說主從復制是Redis高 可用的基礎

下載文件

wget http://download.redis.io/releases/redis-3.2.1.tar.gz

解壓

1.tar zxvf redis-3.2.1.tar.gz

2.mv redis-3.2.1 redis-3.2.1.master

3.tar zxvf redis-3.2.1.tar.gz

4.mv redis-3.2.1 redis-3.2.1.slave-1

5.tar zxvf redis-3.2.1.tar.gz

6.mv redis-3.2.1 redis-3.2.1.slave-2

7.yum install gcc gcc-c++ make -y

執行make和make test

分別進入文件夾:redis-3.2.1.master、redis-3.2.1.slave-1和redis-3.2.1.slave-2的src目錄,執行命令:

1.cd redis-3.2.1.master/src

2.make

若出現下面問題:

轉到:https://www.cnblogs.com/futdream/p/10889262.html

3.make test

若出現下面問題:

轉到:https://www.cnblogs.com/zhaoshunjie/p/5907029.html

//其他兩個目錄執行相同的操作

修改配置文件:redis.conf

主要修改4個參數:

  • port;
  • logfile;
  • slaveof;
  • pidfile;
  • daemonize(配置以daemon方式運行)
  • 修改master文件:redis.conf:

    配置文件的其他部分不要改動,修改如下內容:

  • port 6379
  • pidfile /var/run/redis_6379.pid
  • # slaveof <masterip> <masterport>
  • logfile "/var/log/redis.master.log"
  • daemonize yes
  • ?

    ?

    修改slave-1的配置文件:

  • port 6380
  • pidfile /var/run/redis_6380.pid
  • slaveof 127.0.0.1 6379
  • logfile "/var/log/redis.slave1.log"
  • daemonize yes
  • 修改slave2的配置文件:

  • port 6381
  • pidfile /var/run/redis_6381.pid
  • slaveof 127.0.0.1 6379
  • logfile "/var/log/redis.slave-6381.log"
  • daemonize yes
  • 開啟master和slave1、slave2

    開啟master (salve的開啟方式與此類似)

    轉到目錄:redis-3.2.1.master 下(slave則轉到相應的目錄),執行:

    /src/redis-server redis.conf

    運行成功后,查看logfile可以看到如下界面:

    開啟slave1

    運行成功后,查看logfile可以看到如下界面:

    開啟slave2

    運行成功后,查看logfile可以看到如下界面:

    客戶端連接-測試同步

    如果出現下面問題:

    轉到:https://www.jianshu.com/p/a001fd6a236d

    總結

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

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