91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Nosql里典型的數據庫

發布時間:2020-08-15 22:21:48 來源:網絡 閱讀:532 作者:lshuyou 欄目:數據庫

Nosql里典型的數據庫

Redis

對網站服務器進行寫入

傳統關系式數據庫無法過多的寫入

對數據庫要求:

數據庫高并發讀寫需求

解決方案:

1:讀寫分離

兩臺主如果同時寫入會發生沖突

2:水平分割:

關系式數據庫

數據之間有操作   

 

海量數據的高效率存儲和訪問的需求

用戶如果在海量數據中查詢某一條數據

記錄

 

數據庫的高擴展性和高可用性


 ###############################################

任何一個領域,如果不能通過自己的努力

去獲取或者超出其他人的競爭優勢的話

想勝出,確實挺困難的!!!

################################################



關系型數據庫

關系:可以理解為一張二維表,每個關系都具有一個關系名,就是通常說的表名。

元組:可以理解為二維表中的一行,在數據庫中經常被稱為記錄。

屬性:可以理解為二維表中的一列,在數據庫中經常被稱為字段。

域:屬性的取值范圍,也就是數據庫中某一列的取值限制。

關鍵字:一組可以唯一標識元組的屬性。數據庫中常稱為主鍵,由一個或多個列組成。

關系模式:指對關系的描述,其格式為:關系名(屬性1,屬性2,…,屬性N)。在數據庫中通常稱為表結構。

 

 

Nosql版本

存儲方式不一樣

Redis

存在緩存中

很穩定資格較老,成熟方案較多

mongoDB

存在文件中

社區活躍,更新活躍

HBASE

memcached:數據只保存在緩存中

cassandra

sequoiaDB:只跟ibm捆綁

 

redis

通過鍵值存儲數據

鍵值對應數據如變量

Nosql里典型的數據庫nosql 和關系式數據庫配合使用

Memcache

速度較快、不能備份、支持十幾萬QPS

(對一個服務器在一個時間范圍內處理

的數據量的多少)

MONGODB

文檔型的數據庫,查詢功能強大,支持

索引,最接近關系式數據庫的nosql

結構相對單一

REDIS

基于緩存,速度較快,支持多種數據結構

消耗內存相對較多,支持數萬的QPS

通過其他軟件配合支持本地存儲

 

 

Redis 安裝配置:

1:安裝gcc*

/usr/src/

Redis-3.0.3.tar.gz

Tcl-8.5.7-6.e16.x86

Tar  –zxvf  redis-3.03

Cd  redis-3.03

Make

Rpm  –ivh  Tcl-8.5.7-6.e16.x86

make test

make  PREFIX=/usr/local/redis  install

 

redis-check-aof

redis-check-dump

以上為兩種日志

Nosql里典型的數據庫

Nosql里典型的數據庫

 

Nosql里典型的數據庫

Cd  $

Vim  redis.config

/daemonize

Daemonize  yes  后臺運行

 

Nosql里典型的數據庫

 

Nosql里典型的數據庫

如果我想看一下數據庫里有什么鍵值

Keys  *

Set  age  19

Keys  *

Set 設置

Get 查看

 

 

測試指定的并發類型

 

官方網站:http://www.redis.cn/

Redis.io

 

String 字符串

String字符串在一個鍵里面只能有一個值

Set設置鍵

Get查看鍵

./redis-cli

防止覆蓋:

Setnx  name zhangsan

顯示為0不成功

Setnx  name1  zhangsan

顯示為1則成功創建

Setex  aa 30 111  設置臨時的鍵

Ttl  aa 查看生存周期

-1  為永久生效

-2目標鍵為不存在

Hexists  c  b3

 

批量設置多個鍵:

 MSET a3 333 a4 444 a5 555

成功返回ok,失敗返回0

 

mget 批量查看鍵

 

msetnx  批量設置新建,防止覆蓋

MSETNX  a5 555 a6 aaa

 

替換操作

Set b1 ‘hi zhangsan’

Get b1

替換指定鍵的鍵值從3里面開始替換

SETRANGE b1 3 lisi

             (替換的內容)

Get  b1 查看原值,并替換新值

 

整個內容替換成別的值并可以查看原來的值

Getset  b1 hello zhangsan查看新值并替換新值

Get  b1

 

Getrange b1 0 5查看部分鍵值

          查找第一個到第五個字符

 

 

 

 

鍵值增減

Set c1 1

Set c2 2

Get c1

INCR c1

Get c1

以上會發生增加變化如果不想讓他加1  yici10

INCRBY  c1  +10  (必須為整數則依次增長10

 

DECRBY  c1  10 則每次執行依次減10

 

APPEND  b1  lisi  追加內容為lisi四個字符

Strlen b1 查看鍵值長度

Del b1 刪除b1 只能一次刪除一個

 

Hash 字符串

在一個鍵里面可以有多個值

 

Hset d1 name1 zhangsan創建一個為hash字段

    鍵名 字段   鍵值

HGET d1 name1查看d1鍵名中name1字段值

一個鍵里面存放兩組數據

Hsetnx  設置新建防止它覆蓋

HSETNX d1 name3 xxx  1為成功

Hmget d1 name1 name2 name3 批量查看字段的值

 

Hkeys 查看指定鍵中的字段名稱:

HKEYS d1 只查看名字

Hgetall查看指定鍵的值

HDEL d1 name3 刪除指定字段

Hset  d2 a 1

       字段名數值1

Hkeys d2

Hincrby d2 a 5增加指定字段的值

 

List 雙向隊列

雙向隊列就是一種特殊的string類型

只是做了一個排序有一個前后順序

 

服務在建立連接的時候有個隊列

如何將這些消息排成一列進行管理

有一個先后順序服務質量

隊列里的每一個數據就可以看成一個string數據類型

有兩種排列順序一種是從左到右 0 1 2 3

一種是從右到左 -1  -2  -3

             0  1   2  3 個數據

Lpush list1 1 從左往右插入

Lpush list1 2

Lrange list1 0 -1查看從左邊第一個到右邊第一個

        

Rpush list2 one two three four從右往左插入

Lrange list2 0 -1  查看

 

Linsert  list2 before two 3 hi

            After (在之后)

        插入到隊列lisi2中在two之前插入了hi

 

Lset list2 1‘five’  list2 中從左往右第二個位置把hi改為five

 

Rpush  list3 hi 1 hi 2 hi 3 hi 4

Lrange  list3  0 -1  查看總共八個元素

Lrem  list3  -2  hi  刪除指定隊列中重復的元素

         把倒數第一個第二個給刪除

 

Lrange  list1  0  -1  查看

Ltrim  list1 1 2刪除list1 表里面第1個第2

Lrange  list1  0  -1  查看已經刪除

 

Lpush list8 11 12 13 14 15 16 新建隊列

Ltrim list8  0  3  保留前三個

Lrange list8  0 -1  查看所有

 

Lpop list8  刪除指定隊列中左邊的第一個元素

Rpop list8 刪除指定隊列中右邊的第一個元素

 

如果我想刪除的同時還能夠把這個

元素放到其他隊列里

Lrange  list8  0  -1

Lrance  list2  0  -1

Rpoplpush list8  list2 list8隊列中的最后一個元素

移動到list2隊列中

 

Llen 查看隊列長度

Lien list2  1通過下標來查看隊列中元素的值

Lindex list2  0

 

 

Zset  有序集合

Sorted setzset)是set的升級版本,

它在set的基礎上增加了一個順序屬性,

這一屬性在添加修改元素的時候可以指定,

每次指定后,zset會自動重新按新得值調整順序。

可以理解為有兩列的mysql表,

一列存value,一列存順序。操作中key理解為zset的名字。

Set

Nosql里典型的數據庫

qq中的好有推薦

 

   分數    下標

Sadd q1 1  添加集合

Smembers q1 查看集合所有元素

Sadd q1 234

 

Srandmember  q1  隨機調用值

Spop  q1  隨機刪除一個值

 Srem q1 4 指定隨機刪除一個值

Smembers q1  查看集合所有元素

 

 

Scard  q1  查看總共有幾個元素

Sismember  q1 3  查看3是否為集合里的元素

 

Sadd q2 1 2 3 4

Sadd q3 3 4 5 6

Sdiff q2 q3  查看查集以第一個指定集合為主

 

Sdiffstore q4 q3 q2 查看并把q3 q2集合寫入q4

Smembers q4

 

Smembers q2查看集合中所有元素

Smembers q3

Sinter q2 q3 查看交集

Sinterstore q8 q2 q3 需要有一樣的才能保存到新集合

 查看交集并保存到新集合

 

 

Sunion q2 q3 查看并集

Sunionstore  q9 q2 q3

Smove q2 q3 1 先寫源集合在寫目標集合把q2的值移動到q3

移動集合中的元素 

           

  

有序集合:比原來的集合多一個分數

能夠實現實時同步

Zadd z1 1 aa 3 bb 2 cc 2 dd

Zrange z1 0  -1 分數是按照從小到大的排序

     查看集合內元素

Zrange z1 0 -1 withscores  分數是按照從小到大的排序

 

Zrevrange  z1 0 -1 withscores

  會按照分數從大到小排列

Zrangebyscore z1 2  3 withscores

 查看           分數從23

Zrem z1 dd

     刪除值

Zrevrange z1 0 -1 withscores

Zincrby z1 5 aa 

Zrevrange z1 0 -1 withscores

 

Zincrby z1 4 dd 創建出來并把分數設為4

         添加分數如不存在則創建

Zrange z1 0 -1 withscores

Zrank z1 aa

按照分數從小到大的順序獲取指定值的下標

 

Zrevrank z1 aa 按照分數從小到大順序獲取指定值的下標 

 

Zcard  z1  統計集合中元素個數

Zcount z1 4 10 統計指定分數范圍內的元素個數

 

Zrange  z1 0 -1 withscores

Zrank z1 cc

Zremrangebyrank  z1 1 2 刪除了bbdd

    刪除下標在指定范圍內的元素

Zrange z1 0 -1 withscores

Zremrangebyscore  z1 1 3

根據分數來刪除之間的

刪除分數在指定范圍內的元素

 

Zadd z2 1 one 2 two 3 three

Zadd z3 2 two 3 three 3 four

Zinterstore z4 2 z2 z3 做交集

     z4 做集合、有兩個分別是z2z3

Zrange z4  0  -1  查看他們的交集是對了兩邊都有

Zrange z4  0  -1  withscores 取交集并保存至新集合

有序集合取出以后分數是要疊加的

 

在有序集合里插集無意義 因為沒有那個命令

并集:

Zrange z2 0 -1 withscores  創建one1 two2 three3

Zrange z3 0 -1 withscores  創建two2 three3 four4 

Zunionstore z5 2 z2 z3 取并集并保存至新集合(分數疊加)

Zrange z5 0  -1  withscores查看新集合  

 

全局的管理命令

Keys  *

Dbsize  統計鍵的數量

Exists a2 查看某個鍵是否存在 0 不存在 1存在

                            -1永久 -2 臨時

Ttl a2  

Expire q4 20可以設置為生效時間的鍵

設置q4有效時間為20

Ttl  q4  會有變化

Rename d1 d2 改名將d1 改為d2

Type a1  查看鍵的數據類型

         (如string list set zset

Info 查看版本信息

Keys  *

Select  1選擇去哪一個數據庫默認為0數據庫

一共有0-15   16個數據庫

Move d2 1 把一個鍵移動到其他數據庫中

       在當前數據庫中就無法看到d2啦!

Select  1  數據庫里就可以看到啦!

Flushdb  清空當前數據庫

Flushall  清空所有數據庫16個數據庫里變量)

 

 

數據庫應用

 

密碼驗證:

Yum –y install gcc*

 

Nosql里典型的數據庫

Nosql里典型的數據庫

Nosql里典型的數據庫

make

make test

Nosql里典型的數據庫

Cd  /usr/local/redis

 

Nosql里典型的數據庫

Vim redis.conf  打開主配置文件

Daemonize  yes設置為后臺啟動

Nosql里典型的數據庫啟動redis

Nosql里典型的數據庫  P  登入

Vim redis.conf  打開主配置文件

/requirepass   搜索

 Requirepass  123.com 去掉注釋寫入密碼

Wq!

Pkill redis  重啟一下redis

./bin/redis-server  ./redis.conf

./bin/redis-cli  登入

Keys  * 會看不到任何的內容

Auth 123.com 需要提供認證認證

或者登入的時候加選項指定密碼 –a  123.com

 

備份:

Nosql是能保存數據的nosql

是怎樣來保存的!

Cd  /usr/local/redis

/usr/local/redis/bin/redis-server 空格

/usr/local/redis/redis.conf  開啟服務

以上為一行

/usr/local/redis/bin/redis-cli –a 123.com 登入

Keys  * 就能看到啦

Save  保存

Exit

Pkill redis

Cd  /root/

/usr/local/redis/bin/redis-server  /usr/local/redis/redis.conf

/usr/local/redis/bin/redis-cli –a 123.com

Keys  *  為空的!

 

Vim /usr/local/redis/redis.conf

/dir

/usr/local/redis  (修改以前為dir  ./

/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf

開啟

/usr/local/redis/bin/redis-cli  -a  123.com 登入

Keys  * 就會看到有不用去配置文件找

 

 

主從同步:

實驗需求:一臺服務器上做主從

需要在一臺服務器上創建兩個工作目錄

Mysql   mysqld

1從:從服務器的配置(一臺服務器上)

Cd  /usr/local/redis/ 進入工作目錄

Ls     會看到主配置文件redis.conf

Cd  /usr/local/

Cp  -r  redis/  redis-slave/

Ls  就會有兩個工作目錄

Vim redis-slave/redis.conf

Pidfile /usr/local/redis-slave/redis.pid 修改為這個文件

Port  6380  改端口

dir /usr/local/redis-slave  (修改以前為dir ./)

/slaveof  查找/

slaveof 127.0.0.1  6379 主服務器ip、端口

masterauth  123.com

wq!

 

/usr/local/redis-slave/bin/redis-server 空格

/usr/local/redis-slave/redis.conf

以上兩行為一行

netstat  -anpt  查看端口有6380 6379

 

 

驗證登入主服務器(在一臺機器上做)

/usr/local/redis/bin/redis-cli –a 123.com

Keys  * 有變量

Set  bb  111 創建一個bb

Keys  *

Exit

用從服務器登入

Nosql里典型的數據庫

              Keys  *

看到bb則代表創建成功

 

如果是在兩臺服務器上搭建則只需要

從服務器主配置文件里從服務器的ip地址指到主就行

 

 

 

 

 

 

 

Redis的五種數據結構以及使用場景介紹

String——字符串
Hash——
字典
List——
列表
Set——
集合
Sorted Set——
有序集合

 

1.    String——字符串

String 數據結構是簡單的 key-value 類型,value 不僅可以是 String,也可以是數字(當數字類型用 Long 可以表示的時候encoding 就是整型,其他都存儲在 sdshdr 當做字符串)。使用 Strings 類型,可以完全實現目前 Memcached 的功能,并且效率更高。還可以享受 Redis 的定時持久化(可以選擇 RDB 模式或者 AOF 模式),操作日志及 Replication 等功能。除了提供與 Memcached 一樣的 getsetincrdecr 等操作外,Redis 還提供了下面一些操作:

1.LEN niushuai:O(1)獲取字符串長度
2.APPEND niushuai redis:往字符串 append 內容,而且采用智能分配內存(每次2倍)
3.設置和獲取字符串的某一段內容
4.設置及獲取字符串的某一位(bit)
5.批量設置一系列字符串的內容
6.原子計數器
7.GETSET 命令的妙用,請于清空舊值的同時設置一個新值,配合原子計數器使用
 

1.Hash——字典
 Memcached 中,我們經常將一些結構化的信息打包成 hashmap,在客戶端序列化后存儲為一個字符串的值(一般是 JSON 格式),比如用戶的昵稱、年齡、性別、積分等。這時候在需要修改其中某一項時,通常需要將字符串(JSON)取出來,然后進行反序列化,修改某一項的值,再序列化成字符串(JSON)存儲回去。簡單修改一個屬性就干這么多事情,消耗必定是很大的,也不適用于一些可能并發操作的場合(比如兩個并發的操作都需要修改積分)。而 Redis  Hash 結構可以使你像在數據庫中 Update 一個屬性一樣只修改某一項屬性值。

存儲、讀取、修改用戶屬性

1.List——列表
List 
說白了就是鏈表(redis 使用雙端鏈表實現的 List),相信學過數據結構知識的人都應該能理解其結構。使用 List 結構,我們可以輕松地實現最新消息排行等功能(比如新浪微博的 TimeLine )。List 的另一個應用就是消息隊列,可以利用 List  *PUSH 操作,將任務存在 List 中,然后工作線程再用 POP 操作將任務取出進行執行。Redis 還提供了操作 List 中某一段元素的 API,你可以直接查詢,刪除 List 中某一段的元素

1.微博 TimeLine
2.消息隊列

1.Set——集合
Set 
就是一個集合,集合的概念就是一堆不重復值的組合。利用 Redis 提供的 Set 數據結構,可以存儲一些集合性的數據。比如在微博應用中,可以將一個用戶所有的關注人存在一個集合中,將其所有粉絲存在一個集合。因為 Redis 非常人性化的為集合提供了求交集、并集、差集等操作,那么就可以非常方便的實現如共同關注、共同喜好、二度好友等功能,對上面的所有集合操作,你還可以使用不同的命令選擇將結果返回給客戶端還是存集到一個新的集合中。

1.共同好友、二度好友
2.利用唯一性,可以統計訪問網站的所有獨立 IP
3.好友推薦的時候,根據 tag 求交集,大于某個 threshold 就可以推薦

1.Sorted Set——有序集合

Sets相比,Sorted Sets是將 Set 中的元素增加了一個權重參數 score,使得集合中的元素能夠按 score 進行有序排列,比如一個存儲全班同學成績的 Sorted Sets,其集合 value 可以是同學的學號,而 score 就可以是其考試得分,這樣在數據插入集合的時候,就已經進行了天然的排序。另外還可以用 Sorted Sets 來做帶權重的隊列,比如普通消息的 score 1,重要消息的 score 2,然后工作線程可以選擇按 score 的倒序來獲取工作任務。讓重要的任務優先執行。

1.帶有權重的元素,比如一個游戲的用戶得分排行榜
2.
比較復雜的數據結構,一般用到的場景不算太多

二、redis 其他功能使用場景

1.訂閱-發布系統

Pub/Sub 從字面上理解就是發布(Publish)與訂閱(Subscribe),在 Redis 中,你可以設定對某一個 key 值進行消息發布及消息訂閱,當一個 key 值上進行了消息發布后,所有訂閱它的客戶端都會收到相應的消息。這一功能最明顯的用法就是用作實時消息系統,比如普通的即時聊天,群聊等功能。

 

 

2:事務——Transactions

誰說 NoSQL 都不支持事務,雖然 Redis  Transactions 提供的并不是嚴格的 ACID 的事務(比如一串用 EXEC 提交執行的命令,在執行中服務器宕機,那么會有一部分命令執行了,剩下的沒執行),但是這個 Transactions 還是提供了基本的命令打包執行的功能(在服務器不出問題的情況下,可以保證一連串的命令是順序在一起執行的,中間有會有其它客戶端命令插進來執行)。Redis 還提供了一個 Watch 功能,你可以對一個 key 進行 Watch,然后再執行 Transactions,在這過程中,如果這個 Watched 的值進行了修改,那么這個 Transactions 會發現并拒絕執行。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

清原| 宿松县| 罗平县| 嫩江县| 浠水县| 茶陵县| 镇平县| 东至县| 顺义区| 北安市| 大安市| 上栗县| 抚顺县| 松滋市| 中卫市| 昌吉市| 遂溪县| 南召县| 玉溪市| 平塘县| 万荣县| 枣强县| 涞源县| 农安县| 高碑店市| 吐鲁番市| 仁寿县| 呈贡县| 比如县| 嘉善县| 嘉兴市| 张家港市| 双桥区| 牟定县| 贺兰县| 四川省| 舞钢市| 文成县| 宁陵县| 含山县| 肥西县|