欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Redis安裝啟動(dòng)及常見數(shù)據(jù)類型

 更新時(shí)間:2021年04月13日 08:46:33   作者:DOONDO  
這篇文章主要介紹了Redis安裝啟動(dòng)及常見數(shù)據(jù)類型,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

Redis 簡(jiǎn)介

Redis 是我們?cè)诨ヂ?lián)網(wǎng)應(yīng)用中使用最廣泛的一個(gè) NoSQL 數(shù)據(jù)庫(kù),基于 C 開發(fā)的鍵值對(duì)存儲(chǔ)數(shù)據(jù)庫(kù)。

Redis 這個(gè)名字是 Remote Dictionary Service 字母縮寫。

很多人想到 Redis,就想到緩存。但實(shí)際上 Redis 除了緩存之外,還有許多更加豐富的使用場(chǎng)景。比如分布式鎖,限流。

Redis 特點(diǎn)

  • 支持?jǐn)?shù)據(jù)持久化
  • 支持多種不同的數(shù)據(jù)結(jié)構(gòu)類型之間的映射
  • 支持主從模式的數(shù)據(jù)備份
  • 自帶了發(fā)布訂閱系統(tǒng)
  • 定時(shí)器、計(jì)數(shù)器

redis的安裝

四種方式獲取一個(gè) Redis:

1.直接編譯安裝(推薦使用)

提前準(zhǔn)備好 gcc 環(huán)境

yum install gcc-c++

接下來下載并安裝 Redis:

wget https://download.redis.io/releases/redis-6.2.1.tar.gz
tar -zxvf redis-6.2.1.tar.gz
cd redis-6.2.1/
make
make install

安裝完成后,啟動(dòng) Redis:

redis-server redis.conf

啟動(dòng)成功頁面如下:

2.使用Docker

Docker 安裝好之后,啟動(dòng) Docker ,直接運(yùn)行安裝命令即可,啟動(dòng)后返回容器運(yùn)行的ID

docker run --name taoguoguo-redis -d -p 6379:6379 redis --requirepass 123

我們先查看運(yùn)行在Docker上的redis容器

docker ps 

確保容器正在運(yùn)行后,可以從宿主機(jī)上連接(前提是宿主機(jī)上存在 redis-cli),因?yàn)榈谝环N編譯安裝方式我們已經(jīng)在宿主機(jī)上安裝了redis 所以可以直接使用宿主機(jī)的命令行工具

#redis-cli 客戶端命令 默認(rèn)參數(shù)有地址 -h 127.0.0.1 端口 -p 6379 密碼 -a '123' 
redis-cli -a 123

宿主機(jī)客戶端,連接成功!

如果宿主機(jī)上沒有安裝 Redis,那么也可以進(jìn)入到 Docker 容器種去操作 Redis:

#1.退出當(dāng)前redis
exit
#2.進(jìn)入Redis容器
docker exec -it taoguoguo-redis redis-cli -a 123

3.也可以直接安裝

CentOS

yum install redis

Ubuntu

apt-get install redis

Mac

brew install redis

通過在線體驗(yàn),使用Redis的相關(guān)功能 http://try.redis.io/

4.redis的后臺(tái)啟動(dòng)

首先,修改 redis.conf 配置文件,將daemonize 守護(hù)線程啟動(dòng)方式開啟

配置完成后,保存退出,啟動(dòng) redis

redis-server redis.conf

redis的數(shù)據(jù)類型

String

String 是 Redis 里邊最最簡(jiǎn)單的一種數(shù)據(jù)結(jié)構(gòu)。在 Redis 中,所以的 key 都是字符串(序列化后的字符串),但是,不同的 key 對(duì)應(yīng)的 value 則具備不同的數(shù)據(jù)結(jié)構(gòu),我們所說的五種不同的數(shù)據(jù)類型,主要是指 value 的數(shù)據(jù)類型不同。

Redis 中的字符串是動(dòng)態(tài)字符串,內(nèi)部是可以修改的,像 Java 中的 StringBuffer,它采用分配冗余空間的方式來減少內(nèi)存的頻繁分配。在 Redis 內(nèi)部結(jié)構(gòu)中,一般實(shí)際分配的內(nèi)存會(huì)大于需要的內(nèi)存,當(dāng)字符串小于 1M 的時(shí)候,擴(kuò)容都是在現(xiàn)有的空間基礎(chǔ)上加倍,擴(kuò)容每次擴(kuò) 1M 空間,最大 512M。

set

set 就是給一個(gè) key 賦值的。

append

使用 append 命令時(shí),如果 key 已經(jīng)存在,則直接在對(duì)應(yīng)的 value 后追加值,否則就創(chuàng)建新的鍵值對(duì)。

decr

可以實(shí)現(xiàn)對(duì) value 的減 1 操作(前提是 value 是一個(gè)數(shù)字),如果 value 不是數(shù)字,會(huì)報(bào)錯(cuò),如果value 不存在,則會(huì)給一個(gè)默認(rèn)的值為 0,在默認(rèn)值的基礎(chǔ)上減一。

decrby

和 decr 類似,但是可以自己設(shè)置步長(zhǎng),該命令第二個(gè)參數(shù)就是步長(zhǎng)。

比如把K3 的值 減10 設(shè)置每次遞減的步長(zhǎng)為10即可

get

get 用來獲取一個(gè) key 的 value。

getrange

getrange 可以用來返回 key 對(duì)應(yīng)的 value 的子串,這有點(diǎn)類似于 Java 里邊的 substring。這個(gè)命令第二個(gè)和第三個(gè)參數(shù)就是截取的起始和終止位置,其中,0表示起始字符串,-1 表示最后一個(gè)字符串,-2 表示倒數(shù)第二個(gè)字符串,以此類推...

注意:原來存在在redis中 key對(duì)應(yīng)的value 不會(huì)發(fā)生改變

getset

獲取并更新某一個(gè) key。

incr

給某一個(gè) key 的 value 自增

incrby

給某一個(gè) key 的 value 自增,同時(shí)還可以設(shè)置步長(zhǎng)

incrbyfloat

和 incrby 類似,但是自增的步長(zhǎng)可以設(shè)置為浮點(diǎn)數(shù)。 incrby 是不可以增加浮點(diǎn)數(shù)的

mget 和 mset

批量獲取和批量存儲(chǔ)

ttl

查看 key 的有效期, -1 代表永遠(yuǎn)不會(huì)過期 , -2 代表已經(jīng)過期

setex

在給 key 設(shè)置 value 的同時(shí),還設(shè)置過期時(shí)間,時(shí)間到了

psetex

和 setex 類似,只不過這里的時(shí)間單位是毫秒(1000ms = 1s)。

setnx

默認(rèn)情況下, set 命令會(huì)覆蓋已經(jīng)存在的 key,setnx 則不會(huì)。

msetnx

批量設(shè)置,如果有一個(gè)存在,整個(gè)操作會(huì)失敗。

setrange

指定offset(偏移量) 覆蓋一個(gè)已經(jīng)存在的 key 的value

strlen

查看字符串長(zhǎng)度

String(BIT) 相關(guān)命令

在 Redis 中,字符串都是以二進(jìn)制的方式來存儲(chǔ)的。例如 set k1 a,a 對(duì)應(yīng)的 ASCII 碼是 97,97 轉(zhuǎn)為二進(jìn)制是 01100001,BIT 相關(guān)的命令就是對(duì)二進(jìn)制進(jìn)行操作的。

getbit

key 對(duì)應(yīng)的 value 在 offset 處的 bit 值

setbit

修改 key 對(duì)應(yīng)的 value 在 offset 處的 bit 值

bitcount

統(tǒng)計(jì)二進(jìn)制數(shù)據(jù)中 1 的個(gè)數(shù), 采用位

bitCount應(yīng)用場(chǎng)景舉例,假設(shè)我要記錄測(cè)算系統(tǒng)每個(gè)用戶當(dāng)前登錄的次數(shù),比如用戶名為: taoguoguo

#命令如下
setbit key 當(dāng)前登錄次數(shù) 偏移量
#第一次登錄
setbit taoguoguo 1 1
#第二次登錄
setbit taoguoguo 2 1
#第三次登錄
setbit taoguoguo 3 1
#當(dāng)前登錄次數(shù)統(tǒng)計(jì)
bitcount taoguoguo 

List

Redis中的List實(shí)際上是一個(gè)string類型的雙向鏈表,因此既可以做棧也可以做隊(duì)列來使用。不同的是棧是先進(jìn)后出,隊(duì)列是先進(jìn)先出。鏈表被廣泛地用于實(shí)現(xiàn)Redis的各種功能,如列表鍵、發(fā)布與訂閱、慢查詢、監(jiān)視器等。Redis中單個(gè)List可容納2^32-1約40億個(gè)元素

鏈表的特點(diǎn):

  • 鏈表中的元素是有序的,可通過索引下標(biāo)來獲取某個(gè)元素或某個(gè)范圍內(nèi)的元素列表。
  • 鏈表中的元素是可以重復(fù)的

lpush

將所有指定的值插入到存于 key 的列表的頭部。如果 key 不存在,那么在進(jìn)行 push 操作前會(huì)創(chuàng)建一個(gè)空列表。 如果 key 對(duì)應(yīng)的值不是一個(gè) list 的話,那么會(huì)返回一個(gè)錯(cuò)誤。

rpush

向存于 key 的列表的尾部插入所有指定的值。

lrange

返回列表指定區(qū)間內(nèi)的元素,索引從0開始,-1為最后一個(gè)。

lpop

移除并返回列表的頭元素。

rpop

移除并返回列表的尾元素。

lindex

返回列表中,下標(biāo)為 index 的元素。

ltrim

ltrim 可以對(duì)一個(gè)列表進(jìn)行修剪,類似于subList。

blpop/brpop

阻塞式的彈出,相當(dāng)于 lpop 的阻塞版,如果當(dāng)前List數(shù)據(jù)為空,那么在阻塞時(shí)長(zhǎng)內(nèi)如果有添加元素 會(huì)進(jìn)行彈出,如果沒有元素加入,命令超過時(shí)間自動(dòng)停止。

另一客戶端在阻塞時(shí)間加入新元素至k1鏈表

Set

Redis 的 Set 是 String 類型的無序集合。集合成員是唯一的,這就意味著集合中不能出現(xiàn)重復(fù)的數(shù)據(jù)。

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

集合中最大的成員數(shù)為 2^32 - 1 (4294967295, 每個(gè)集合可存儲(chǔ)40多億個(gè)成員)。

sadd

添加元素到一個(gè) key 中

smembers

獲取一個(gè) key 下的所有元素

srem

移除指定的元素

sismemeber

返回某一個(gè)成員是否在集合中, 0 代表不存在, 1表示存在

scard

返回集合的數(shù)量

srandmember

隨機(jī)返回一個(gè)元素

spop

隨機(jī)返回并且出棧一個(gè)元素

smove

把一個(gè)元素從一個(gè)集合移到另一個(gè)集合中去

sdiff

返回兩個(gè)集合的差集,不同集合的順序,差集結(jié)果是不一樣的

sinter

返回兩個(gè)集合的交集

sdiffstore

這個(gè)類似于 sdiff ,不同的是,計(jì)算出來的結(jié)果會(huì)保存在一個(gè)新的集合中

sinterstore

類似于 sinter,只是將計(jì)算出來的交集保存到一個(gè)新的集合中

sunion

求并集

sunionstore

求并集并且將結(jié)果保存到新的集合中

Hash

Redis hash 是一個(gè) string 類型的 field(字段) 和 value(值) 的映射表,hash 特別適合用于存儲(chǔ)對(duì)象。

Redis 中每個(gè) hash 可以存儲(chǔ) 2^32 - 1 鍵值對(duì)(40多億)。

hset

添加值

hget

獲取值

hmset

批量設(shè)置

hmget

批量獲取

hdel

刪除一個(gè)指定的 field

hsetnx

默認(rèn)情況下,如果 key 和 field 相同,會(huì)覆蓋掉已有的 value,hsetnx 則不會(huì)

hvals

獲取所有的 value

hkeys

獲取所有的 key

hgetall

同時(shí)獲取所有的 key 和 value

hexists

返回 field 是否存在, 0 不存在, 1存在

hincrby

給指定的 value 自增

hincrbyfloat

可以自增一個(gè)浮點(diǎn)數(shù)

hlen

返回 某一個(gè) key 中 value 的數(shù)量

hstrlen

返回某一個(gè) key 中的某一個(gè) field 的字符串長(zhǎng)度

ZSet

Redis 有序集合和集合一樣也是 string 類型元素的集合,且不允許重復(fù)的成員。

不同的是每個(gè)元素都會(huì)關(guān)聯(lián)一個(gè) double 類型的分?jǐn)?shù)。redis 正是通過分?jǐn)?shù)來為集合中的成員進(jìn)行從小到大的排序。

有序集合的成員是唯一的,但分?jǐn)?shù)(score)卻可以重復(fù)。

集合是通過哈希表實(shí)現(xiàn)的,所以添加,刪除,查找的復(fù)雜度都是 O(1)。 集合中最大的成員數(shù)為 232 - 1 (4294967295, 每個(gè)集合可存儲(chǔ)40多億個(gè)成員)。

zadd

將指定的元素添加到有序集合中

zscore

返回 member 的 score 值

zrange

返回集合中的一組元素,可以加上 withscores 連同分?jǐn)?shù)一起返回

zrevrange

返回一組元素,但是是倒序

zcard

返回元素個(gè)數(shù)

zcount

返回 score 在某一個(gè)區(qū)間內(nèi)的元素,默認(rèn)是閉區(qū)間,如果要開區(qū)間 在 score值 前面加上 (

zrangebyscore

按照 score 的范圍返回元素

zrank

返回元素的排名(從小到大)

zrevrank

返回元素排名(從大到小)

zincrby

score自增

zinterstore

給兩個(gè)集合求交集,給交集求和

zrem

彈出一個(gè)元素

zlexcount

計(jì)算有序集合中成員數(shù)量

zrangebylex

返回指定區(qū)間內(nèi)的成員

Key相關(guān)操作

del

刪除一個(gè) key/value

dump

序列化給定的 key

exists

判斷一個(gè) key 是否存在

ttl

查看一個(gè) key 的有效期 , -1 永不過期 , -2 已經(jīng)過期

expire

給一個(gè) key 設(shè)置有效期,如果 key 在過期之前被重新 set 了,則過期時(shí)間會(huì)失效

persist

移除一個(gè) key 的過期時(shí)間

keys *

查看所有的 key

pttl

和 ttl 一樣,只不過這里返回的是毫秒

數(shù)據(jù)類型總結(jié)四種數(shù)據(jù)類型(list/set/zset/hash),在第一次使用時(shí),如果容器不存在,就自動(dòng)創(chuàng)建一個(gè)四種數(shù)據(jù)類型(list/set/zset/hash),如果里邊沒有元素了,那么立即刪除容器,釋放內(nèi)存。

到此這篇關(guān)于Redis安裝啟動(dòng)及常見數(shù)據(jù)類型的文章就介紹到這了,更多相關(guān)Redis安裝啟動(dòng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 高并發(fā)下Redis如何保持?jǐn)?shù)據(jù)一致性(避免讀后寫)

    高并發(fā)下Redis如何保持?jǐn)?shù)據(jù)一致性(避免讀后寫)

    本文主要介紹了高并發(fā)下Redis如何保持?jǐn)?shù)據(jù)一致性(避免讀后寫),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Redis集群的搭建圖文教程

    Redis集群的搭建圖文教程

    下面小編就為大家分享一篇Redis集群的搭建圖文教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2017-11-11
  • Redis中Bitmap的使用示例

    Redis中Bitmap的使用示例

    本文主要介紹了Redis中Bitmap的使用示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Redis獲取某個(gè)大key值的腳本實(shí)例

    Redis獲取某個(gè)大key值的腳本實(shí)例

    這篇文章主要給大家分享介紹了關(guān)于Redis獲取某個(gè)大key值的一個(gè)腳本實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-04-04
  • redis底層數(shù)據(jù)結(jié)構(gòu)之skiplist實(shí)現(xiàn)示例

    redis底層數(shù)據(jù)結(jié)構(gòu)之skiplist實(shí)現(xiàn)示例

    這篇文章主要為大家介紹了redis底層數(shù)據(jù)結(jié)構(gòu)之skiplist實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • CentOS系統(tǒng)安裝Redis及Redis的PHP擴(kuò)展詳解

    CentOS系統(tǒng)安裝Redis及Redis的PHP擴(kuò)展詳解

    這篇文章主要介紹了CentOS系統(tǒng)下安裝Redis數(shù)據(jù)的教程,以及詳解了Redis數(shù)據(jù)庫(kù)的PHP擴(kuò)展,文中介紹的很詳細(xì),相信對(duì)大家的理解和學(xué)習(xí)具有一定的參考借鑒價(jià)值,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-12-12
  • Redis 對(duì)比 Memcached 并在 CentOS 下進(jìn)行安裝配置詳解

    Redis 對(duì)比 Memcached 并在 CentOS 下進(jìn)行安裝配置詳解

    Redis 是一個(gè)開源、支持網(wǎng)絡(luò)、基于內(nèi)存、鍵值對(duì)的 Key-Value 數(shù)據(jù)庫(kù),本篇文章主要介紹了Redis 對(duì)比 Memcached 并在 CentOS 下進(jìn)行安裝配置詳解,有興趣的可以了解一下。
    2016-11-11
  • redis客戶端連接錯(cuò)誤 NOAUTH Authentication required

    redis客戶端連接錯(cuò)誤 NOAUTH Authentication required

    本文主要介紹了redis客戶端連接錯(cuò)誤 NOAUTH Authentication required,詳細(xì)的介紹了解決方法,感興趣的可以了解一下
    2021-07-07
  • Redis配置外網(wǎng)可訪問(redis遠(yuǎn)程連接不上)的方法

    Redis配置外網(wǎng)可訪問(redis遠(yuǎn)程連接不上)的方法

    默認(rèn)情況下,當(dāng)我們?cè)诓渴鹆藃edis服務(wù)之后,redis本身默認(rèn)只允許本地訪問。Redis服務(wù)端只允許它所在服務(wù)器上的客戶端訪問,如果Redis服務(wù)端和Redis客戶端不在同一個(gè)機(jī)器上,就要進(jìn)行配置。
    2022-12-12
  • 深入理解Redis內(nèi)存淘汰策略

    深入理解Redis內(nèi)存淘汰策略

    本文主要介紹了深入理解Redis內(nèi)存淘汰策略,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07

最新評(píng)論