激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數(shù)據(jù)庫(kù)技術(shù)|

服務(wù)器之家 - 數(shù)據(jù)庫(kù) - Redis - redis部署及各種數(shù)據(jù)類型使用命令詳解

redis部署及各種數(shù)據(jù)類型使用命令詳解

2022-03-06 22:10馬昌偉 Redis

這篇文章主要介紹了redis部署及各種數(shù)據(jù)類型使用命令,編譯安裝redis及部署過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

 

編譯安裝redis

 

開(kāi)始部署

[root@mcw01 ~]$ ls
anaconda-ks.cfg  mongodb-linux-x86_64-3.2.8.tgz
[root@mcw01 ~]$ wget http://download.redis.io/releases/redis-4.0.10.tar.gz
--2022-03-05 18:27:02--  http://download.redis.io/releases/redis-4.0.10.tar.gz
Resolving download.redis.io (download.redis.io)... 45.60.125.1
Connecting to download.redis.io (download.redis.io)|45.60.125.1|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1738465 (1.7M) [application/octet-stream]

Saving to: ‘redis-4.0.10.tar.gz"

100%[====================>] 1,738,465   63.4KB/s   in 25s    

2022-03-05 18:27:27 (68.2 KB/s) - ‘redis-4.0.10.tar.gz" saved [1738465/1738465]

anaconda-ks.cfg  mongodb-linux-x86_64-3.2.8.tgz  redis-4.0.10.tar.gz
[root@mcw01 ~]$ tar xf redis-4.0.10.tar.gz 
anaconda-ks.cfg  mongodb-linux-x86_64-3.2.8.tgz  redis-4.0.10  redis-4.0.10.tar.gz
[root@mcw01 ~]$ cd redis-4.0.10/
[root@mcw01 ~/redis-4.0.10]$ ls  #有makefile文件,就不需要./configure配置
00-RELEASENOTES  COPYING  Makefile   redis.conf       runtest-sentinel  tests
BUGS             deps     MANIFESTO  runtest          sentinel.conf     utils
CONTRIBUTING     INSTALL  README.md  runtest-cluster  src
[root@mcw01 ~/redis-4.0.10]$ make

 

報(bào)錯(cuò) gcc命令沒(méi)有找到:

cd hiredis && make static
make[3]: Entering directory `/root/redis-4.0.10/deps/hiredis"
gcc -std=c99 -pedantic -c -O3 -fPIC  -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb  net.c
make[3]: gcc: Command not found
make[3]: *** [net.o] Error 127
make[3]: Leaving directory `/root/redis-4.0.10/deps/hiredis"
make[2]: *** [hiredis] Error 2
make[2]: Leaving directory `/root/redis-4.0.10/deps"
make[1]: [persist-settings] Error 2 (ignored)
    CC adlist.o
/bin/sh: cc: command not found
make[1]: *** [adlist.o] Error 127
make[1]: Leaving directory `/root/redis-4.0.10/src"
make: *** [all] Error 2

 

#解決編譯安裝所需的依賴環(huán)境繼續(xù)部署

um install gcc patch libffi-devel python-devel  zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel openssl openssl-devel -y
然后重新執(zhí)行:
[root@mcw01 ~/redis-4.0.10]$ make  #發(fā)現(xiàn)報(bào)錯(cuò)沒(méi)有某個(gè)目錄或文件。在這之前編譯失敗了,目錄被改變了部分,所以直接刪除重新解壓,然后make編譯
......
Hint: It"s a good idea to run "make test" ;)
make[1]: Leaving directory `/root/redis-4.0.10/src"
[root@mcw01 ~/redis-4.0.10]$ ls
00-RELEASENOTES  COPYING  Makefile   redis.conf       runtest-sentinel  tests
BUGS             deps     MANIFESTO  runtest          sentinel.conf     utils
CONTRIBUTING     INSTALL  README.md  runtest-cluster  src
[root@mcw01 ~/redis-4.0.10]$ make install 
cd src && make install
make[1]: Entering directory `/root/redis-4.0.10/src"
    CC Makefile.dep
    INSTALL install
[root@mcw01 ~/redis-4.0.10]$ 
[root@mcw01 ~/redis-4.0.10]$ redis-c   #當(dāng)編譯好之后,就可以命令補(bǔ)全,也就是已經(jīng)配置好環(huán)境變量了
redis-check-aof  redis-check-rdb  redis-cli        
[root@mcw01 ~/redis-4.0.10]$ which redis-server  #默認(rèn)編譯安裝到/usr/local下去了
/usr/local/bin/redis-server
[root@mcw01 ~/redis-4.0.10]$

 

redis服務(wù)端運(yùn)行和客戶端連接

[root@mcw01 ~]$ redis-server  #安裝好之后,直接運(yùn)行這個(gè)命令
24270:C 05 Mar 18:43:08.857 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
24270:C 05 Mar 18:43:08.857 # Redis version=4.0.10, bits=64, commit=00000000, modified=0, pid=24270, just started
24270:C 05 Mar 18:43:08.857 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
                _._                                                  
           _.-``__ ""-._                                             
      _.-``    `.  `_.  ""-._           Redis 4.0.10 (00000000/0) 64 bit
  .-`` .-```.  ```/    _.,_ ""-._                                   
 (    "      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|"` _.-"|     Port: 6379
 |    `-._   `._    /     _.-"    |     PID: 24270
  `-._    `-._  `-./  _.-"    _.-"                                   
 |`-._`-._    `-.__.-"    _.-"_.-"|                                  
 |    `-._`-._        _.-"_.-"    |           http://redis.io        
  `-._    `-._`-.__.-"_.-"    _.-"                                   
 |    `-._`-._        _.-"_.-"    |                                  
      `-._    `-.__.-"    _.-"                                       
          `-._        _.-"                                           
              `-.__.-"                                               
24270:M 05 Mar 18:43:08.880 # Server initialized
24270:M 05 Mar 18:43:08.880 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add "vm.overcommit_memory = 1" to /etc/sysctl.conf and then reboot or run the command "sysctl vm.overcommit_memory=1" for this to take effect.
24270:M 05 Mar 18:43:08.880 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command "echo never > /sys/kernel/mm/transparent_hugepage/enabled" as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
24270:M 05 Mar 18:43:08.880 * Ready to accept connections
客戶端連接:
[root@mcw01 ~]$ redis-cli 127.0.0.1 6379  ^C #我再開(kāi)一個(gè)窗口,默認(rèn)連接的ip 端口
[root@mcw01 ~]$ redis-cli  #連上之后,ping命令,返回pong,說(shuō)明連接成功的
127.0.0.1:6379> ping
PONG
127.0.0.1:6379>

 

redis配置

[root@mcw01 ~]$ ln -s redis-4.0.10  redis 
[root@mcw01 ~]$ ls
anaconda-ks.cfg  dump.rdb  mongodb-linux-x86_64-3.2.8.tgz  redis  redis-4.0.10  redis-4.0.10.tar.gz
[root@mcw01 ~]$ ls redis
00-RELEASENOTES  COPYING  Makefile   redis.conf       runtest-sentinel  tests
BUGS             deps     MANIFESTO  runtest          sentinel.conf     utils
CONTRIBUTING     INSTALL  README.md  runtest-cluster  src
[root@mcw01 ~]$ cd redis
[root@mcw01 ~/redis]$ egrep -v "^#|^$" redis.conf >mcwRedis.conf
[root@mcw01 ~/redis]$ cat mcwRedis.conf 
bind 127.0.0.1   
protected-mode yes  #保護(hù)模式開(kāi)啟,并且綁定ip是本機(jī),應(yīng)該是不支持遠(yuǎn)程訪問(wèn),只支持本機(jī)訪問(wèn)。
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize no
supervised no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile ""
databases 16
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir ./
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
slave-lazy-flush no
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble no
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes
[root@mcw01 ~/redis]$

 

redis簡(jiǎn)單配置并啟動(dòng)

[root@mcw01 ~/redis]$ cat mcwRedis.conf 
bind 10.0.0.11
protected-mode yes
port 6379
requirepass mcw123 #配置認(rèn)證密碼
daemonize yes #后臺(tái)守護(hù)進(jìn)程的方式開(kāi)啟
pidfile /var/run/redis_6379.pid
loglevel notice
logfile ""
[root@mcw01 ~/redis]$ 
[root@mcw01 ~/redis]$ ls  
00-RELEASENOTES  COPYING  Makefile       README.md   runtest-cluster   src
BUGS             deps     MANIFESTO      redis.conf  runtest-sentinel  tests
CONTRIBUTING     INSTALL  mcwRedis.conf  runtest     sentinel.conf     utils
[root@mcw01 ~/redis]$ redis-server mcwRedis.conf  #指定配置文件啟動(dòng)。這應(yīng)該是后面有注釋導(dǎo)致的吧,去掉注釋
*** FATAL CONFIG FILE ERROR ***
Reading the configuration file, at line 4
>>> "requirepass mcw123 #配置認(rèn)證密碼"
Bad directive or wrong number of arguments
去掉注釋,然后成功啟動(dòng),這里不能在配置后面加注釋,容易出錯(cuò)
[root@mcw01 ~/redis]$ vim mcwRedis.conf 
requirepass mcw123
daemonize yes
[root@mcw01 ~/redis]$ redis-server mcwRedis.conf 
24391:C 05 Mar 19:10:38.749 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
24391:C 05 Mar 19:10:38.749 # Redis version=4.0.10, bits=64, commit=00000000, modified=0, pid=24391, just started
24391:C 05 Mar 19:10:38.749 # Configuration loaded
[root@mcw01 ~/redis]$ netstat -lntup|grep redis #成功啟動(dòng)了
tcp        0      0 10.0.0.11:6379          0.0.0.0:*               LISTEN      24392/redis-server  
[root@mcw01 ~/redis]$ redis-cli  #現(xiàn)在直接這么連接就不行了
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected> 
[root@mcw01 ~/redis]$ redis-cli  -h 10.0.0.11 -p 6379   #指定ip端口連接
10.0.0.11:6379> ping
(error) NOAUTH Authentication required.
10.0.0.11:6379> auth mcw123
OK
10.0.0.11:6379> ping  #認(rèn)證之后就可以正常執(zhí)行命令了
PONG
10.0.0.11:6379>

 

set、get命令

10.0.0.11:6379> set name mcw
OK
10.0.0.11:6379> get name
"mcw"
10.0.0.11:6379> set age  18  
OK
10.0.0.11:6379> get age  #它將值改為字符串類型的了
"18"
10.0.0.11:6379>

 

簡(jiǎn)單配置文件介紹

bind 192.168.182.130  #綁定服務(wù)端地址 
protected-mode yes    #安全模式 
port 6800        #端口 
requirepass  haohaio                #密碼                                                                       
daemonize yes    #后臺(tái)運(yùn)行 
pidfile /var/run/redis_6379.pid    #進(jìn)程id文件
loglevel notice        #日志等級(jí)
logfile ""

 

redis基礎(chǔ)數(shù)據(jù)類型

redis是一種高級(jí)的key:value存儲(chǔ)系統(tǒng),其中value支持五種數(shù)據(jù)類型
    字符串(strings)
    散列(hashes)
    列表(lists)
    集合(sets)
    有序集合(sorted sets)  

 

redis命令

 

redis簡(jiǎn)單命令

keys * 查看所有key
type key 查看key類型
expire key seconds 過(guò)期時(shí)間
ttl key 查看key過(guò)期剩余時(shí)間 -2表示key已經(jīng)不存在了
persist 取消key的過(guò)期時(shí)間 -1表示key存在,沒(méi)有過(guò)期時(shí)間

exists key 判斷key存在 存在返回1 否則0
del keys 刪除key 可以刪除多個(gè)
dbsize 計(jì)算key的數(shù)量
flushdb #清除redis所有key,慎用
flushdb #清除redis所有key,慎用
flushdb #清除redis所有key,慎用

keys * 
10.0.0.11:6379> keys *
1) "age"
2) "name"
10.0.0.11:6379> set gender man
OK
1) "gender"
2) "age"
3) "name"
10.0.0.11:6379> 
keys *         查看所有key
type key      查看key類型
添加一個(gè)列表,查看key類型,是列表類型
10.0.0.11:6379> type name
string
10.0.0.11:6379> LPUSH paidui1 xiaoma mcw
(integer) 2
10.0.0.11:6379> keys * 
1) "paidui1"
2) "gender"
3) "age"
4) "name"
10.0.0.11:6379> type paidui1
list
expire key seconds    過(guò)期時(shí)間
ttl key     查看key過(guò)期剩余時(shí)間        -2表示key已經(jīng)不存在了
給已有的paidui1設(shè)置一個(gè)過(guò)期時(shí)間多少秒,然后ttl  key可以查看過(guò)期時(shí)間,當(dāng)-2時(shí)就已經(jīng)過(guò)期了,過(guò)期了就已經(jīng)被移除了
10.0.0.11:6379> EXPIRE paidui1 10
(integer) 1
10.0.0.11:6379> ttl paidui1
(integer) -2
persist     取消key的過(guò)期時(shí)間   -1表示key存在,沒(méi)有過(guò)期時(shí)間
比如下面,將name設(shè)置50秒過(guò)期,當(dāng)要取消name的過(guò)期時(shí)間,執(zhí)行命令后,ttl值變成-1,就不會(huì)出現(xiàn)過(guò)期刪除的情況了
10.0.0.11:6379> EXPIRE name 50
10.0.0.11:6379> ttl name
(integer) 22
(integer) 19
10.0.0.11:6379> PERSIST name
(integer) -1
exists key     判斷key存在    存在返回1    否則0
10.0.0.11:6379> exists name
10.0.0.11:6379> exists mcw
(integer) 0
del keys     刪除key    可以刪除多個(gè)
4) "myname"
10.0.0.11:6379> del myname
dbsize         計(jì)算key的數(shù)量
10.0.0.11:6379> dbsize
(integer) 3
flushdb  #清除redis所有key,慎用
10.0.0.11:6379> flushdb
(empty list or set)
10.0.0.11:6379>

 

字符串類型命令

redis數(shù)據(jù)類型1,字符串類型,通過(guò)set命令,設(shè)置字符串類型的key
    strings類型
    set   設(shè)置key
    get   獲取key
    append  追加string
    mset   設(shè)置多個(gè)鍵值對(duì)
    mget   獲取多個(gè)鍵值對(duì)
    del  刪除key
    incr  遞增+1
    decr  遞減-1
set   設(shè)置key
get   獲取key
append  追加string
10.0.0.11:6379> set "name" "mcw"
OK
10.0.0.11:6379> get name
"mcw"
10.0.0.11:6379> append "name" "Haoren"
(integer) 9
10.0.0.11:6379> get name
"mcwHaoren"
10.0.0.11:6379> 
mset   設(shè)置多個(gè)鍵值對(duì)
mget   獲取多個(gè)鍵值對(duì)
10.0.0.11:6379> mset name2 "xiaoma" "name3" xiaohong
OK
10.0.0.11:6379> keys *
1) "name2"
2) "name"
3) "name3"
10.0.0.11:6379> get name2
"xiaoma"
10.0.0.11:6379> get name3
"xiaohong"
10.0.0.11:6379> 
10.0.0.11:6379> mget name name2 name3
1) "mcwHaoren"
2) "xiaoma"
3) "xiaohong"
10.0.0.11:6379> 
del  刪除key
10.0.0.11:6379> keys *
1) "name2"
2) "name"
3) "name3"
10.0.0.11:6379> del name
(integer) 1
10.0.0.11:6379> del name2 name3
(integer) 2
10.0.0.11:6379> keys *
(empty list or set)
10.0.0.11:6379> 
incr  遞增+1
decr  遞減-1
相當(dāng)于把字符串轉(zhuǎn)換為數(shù)字,計(jì)算后結(jié)果再改成字符串。
還可以減為負(fù)值
10.0.0.11:6379> keys *
(empty list or set)
10.0.0.11:6379> set "dian zan" 0
OK
10.0.0.11:6379> get "dian zan"
"0"
10.0.0.11:6379> incr "dian zan"
(integer) 1
10.0.0.11:6379> incr "dian zan"
(integer) 2
10.0.0.11:6379> get "dian zan"
"2"
10.0.0.11:6379> incr "dian zan"
(integer) 3
10.0.0.11:6379> get "dian zan"
"3"
10.0.0.11:6379> decr "dian zan"
(integer) 2
10.0.0.11:6379> get "dian zan"
"2"
10.0.0.11:6379> 
10.0.0.11:6379> keys *
1) "dian zan"
10.0.0.11:6379> 
10.0.0.11:6379> get "dian zan"
"2"
10.0.0.11:6379> decr "dian zan"
(integer) 1
10.0.0.11:6379> decr "dian zan"
(integer) 0
10.0.0.11:6379> decr "dian zan"
(integer) -1
10.0.0.11:6379> decr "dian zan"
(integer) -2
10.0.0.11:6379> decr "dian zan"
(integer) -3

 

list類型,雙向隊(duì)列

lpush 從列表左邊插
rpush 從列表右邊插
lrange 獲取一定長(zhǎng)度的元素 lrange key start stop
ltrim 截取一定長(zhǎng)度列表
lpop 刪除最左邊一個(gè)元素
rpop 刪除最右邊一個(gè)元素
lpushx/rpushx key存在則添加值,不存在不處理

lpush         從列表左邊插
從左邊插入,再?gòu)淖筮叓@取,先插入的在里面后取出,后插入的在左邊先取出
10.0.0.11:6379> keys *
(empty list or set)
10.0.0.11:6379> lpush paidui mcw1 mcw2 mcw3 mcw4
(integer) 4
10.0.0.11:6379> lrange paidui 0 -1
1) "mcw4"
2) "mcw3"
3) "mcw2"
4) "mcw1"
10.0.0.11:6379> lpush paidui mcw5
(integer) 5
10.0.0.11:6379> lrange paidui 0 -1
1) "mcw5"
2) "mcw4"
3) "mcw3"
4) "mcw2"
5) "mcw1"
10.0.0.11:6379> 
rpush         從列表右邊插
從列表左邊取,第一個(gè)取出來(lái)的是最后推入的,最后一個(gè)取出的是第一個(gè)推入的。
可以想象成如下排隊(duì)順序, mcw5 mcw4 mcw3 mcw2 mcw1   
當(dāng)從右邊推入mcw6的時(shí)候就是 :mcw5 mcw4 mcw3 mcw2 mcw1 mcw6
當(dāng)從左邊取數(shù)據(jù)的時(shí)候就是:
第一次?。簃cw5
第二次取: mcw4
....
第六次?。簃cw6
10.0.0.11:6379> lrange paidui 0 -1
1) "mcw5"
2) "mcw4"
3) "mcw3"
4) "mcw2"
5) "mcw1"
10.0.0.11:6379> rpush paidui mcw6
(integer) 6
10.0.0.11:6379> lrange paidui 0 -1
1) "mcw5"
2) "mcw4"
3) "mcw3"
4) "mcw2"
5) "mcw1"
6) "mcw6"
lrange          獲取一定長(zhǎng)度的元素  lrange key  start stop
取列表類型的數(shù)據(jù),指定開(kāi)始數(shù)據(jù)和結(jié)束數(shù)據(jù),比如開(kāi)始0,結(jié)束-1,這是取列表所有的值
10.0.0.11:6379> lrange paidui 0 -1
1) "mcw5"
2) "mcw4"
3) "mcw3"
4) "mcw2"
5) "mcw1"
10.0.0.11:6379> 
10.0.0.11:6379> keys * 
1) "paidui"
10.0.0.11:6379> type paidui
list
10.0.0.11:6379> get paidui   #列表類型不能用get取值
(error) WRONGTYPE Operation against a key holding the wrong kind of value
10.0.0.11:6379> lrange paid 0 -1  #不存在的鍵
(empty list or set)
10.0.0.11:6379> 
10.0.0.11:6379> lrange paidui 0 -1
1) "mcw5"
2) "mcw4"
3) "mcw3"
4) "mcw2"
5) "mcw1"
10.0.0.11:6379> 
ltrim               截取一定長(zhǎng)度列表
根據(jù)查詢可知列表數(shù)據(jù)順序如下:mcw5 mcw4 mcw3 mcw2 mcw1
索引分別是:                   0    1    2     3    4  
這里是從paidui左邊截取,從索引1開(kāi)始,從索引2結(jié)束,其中包含索引2的數(shù)據(jù),截取之后,這個(gè)key的值就變成截取的值了mcw4 mcw3
然后從左邊查詢,第一個(gè)查出來(lái)的數(shù)據(jù)就是mcw4,第二個(gè)就是mcw3
10.0.0.11:6379> lrange paidui 0 -1
1) "mcw5"
2) "mcw4"
3) "mcw3"
4) "mcw2"
5) "mcw1"
10.0.0.11:6379> ltrim paidui 1 2
OK
10.0.0.11:6379> lrange paidui 0 -1
1) "mcw4"
2) "mcw3"
10.0.0.11:6379> 
lpop                 刪除最左邊一個(gè)元素
rpop                     刪除最右邊一個(gè)元素
根據(jù)lrange可以列表數(shù)據(jù)的順序是:mcw5 mcw4 mcw3 mcw2 mcw1 mcw6
所以從左邊刪除,刪的是mcw5,從右邊刪除,刪的是mcw6
10.0.0.11:6379> lrange paidui 0 -1
1) "mcw5"
2) "mcw4"
3) "mcw3"
4) "mcw2"
5) "mcw1"
6) "mcw6"
10.0.0.11:6379> lpop paidui
"mcw5"
10.0.0.11:6379> rpop paidui
"mcw6"
10.0.0.11:6379> lrange paidui 0 -1
1) "mcw4"
2) "mcw3"
3) "mcw2"
4) "mcw1"
10.0.0.11:6379> 
lpushx/rpushx                key存在則添加值,不存在不處理
不存在返回個(gè)0。默認(rèn)key不存在會(huì)創(chuàng)建key的
10.0.0.11:6379> keys * 
1) "paidui"
10.0.0.11:6379> lpushx paid mcw0
(integer) 0
10.0.0.11:6379> keys * 
1) "paidui"
10.0.0.11:6379> lpushx paidui mcw0
(integer) 5
10.0.0.11:6379> keys * 
1) "paidui"
10.0.0.11:6379> lrange paidui 0 -1
1) "mcw0"
2) "mcw4"
3) "mcw3"
4) "mcw2"
5) "mcw1"
10.0.0.11:6379>

 

redis的集合,是一種無(wú)序的集合,集合中的元素沒(méi)有先后順序。

集合相關(guān)的操作也很豐富,如添加新元素、刪除已有元素、取交集、取并集、取差集等。我們來(lái)看例子:

sadd/srem 添加/刪除 元素
sismember 判斷是否為set的一個(gè)元素
smembers 返回集合所有的成員
sdiff 返回一個(gè)集合和其他集合的差異
sinter 返回幾個(gè)集合的交集
sunion 返回幾個(gè)集合的并集

sadd/srem   添加/刪除 元素
smembers    返回集合所有的成員
10.0.0.11:6379> keys *
(empty list or set)
10.0.0.11:6379> sadd zoo gou mao zhu  #添加
(integer) 3
1) "zoo"
10.0.0.11:6379> type zoo
set
10.0.0.11:6379> smembers zoo  #查詢
1) "mao"
2) "zhu"
3) "gou"
10.0.0.11:6379> 
10.0.0.11:6379> srem zoo zhu  #刪除
(integer) 1
10.0.0.11:6379> smembers zoo
2) "gou"
新增成員
10.0.0.11:6379> sadd zoo zhu #新增
sismember   判斷是否為set的一個(gè)元素
mao是集合zoo里的成員嗎,是,返回的是1;
zhu是集合zoo里的成員嗎,不是,返回的是0
10.0.0.11:6379> sismember zoo mao
10.0.0.11:6379> sismember zoo zhu
(integer) 0
sdiff             返回一個(gè)集合和其他集合的差異
如下,sdiff 集合1 集合2 
返回集合1中有的,而集合2中沒(méi)有的。就是取差集
1) "zoo2"
2) "zoo"
10.0.0.11:6379> smembers zoo2
1) "she"
3) "shu"
10.0.0.11:6379> sdiff zoo zoo2
10.0.0.11:6379> sdiff zoo2 zoo
2) "shu"
sinter           返回幾個(gè)集合的交集
如下,幾個(gè)集合應(yīng)該不只是包含兩個(gè)集合
10.0.0.11:6379> sinter zoo zoo2
1) "zhu"
10.0.0.11:6379> sinter zoo2 zoo
sunion          返回幾個(gè)集合的并集
集合取并集,幾個(gè)集合應(yīng)該不只是能用兩個(gè)集合
10.0.0.11:6379> sunion zoo zoo2
4) "mao"
5) "shu"
10.0.0.11:6379>

 

哈希數(shù)據(jù)結(jié)構(gòu)

hashes即哈希。哈希是從redis-2.0.0版本之后才有的數(shù)據(jù)結(jié)構(gòu)。

hashes存的是字符串和字符串值之間的映射,比如一個(gè)用戶要存儲(chǔ)其全名、姓氏、年齡等等,就很適合使用哈希。

hset 設(shè)置散列值
hget 獲取散列值
hmset 設(shè)置多對(duì)散列值
hmget 獲取多對(duì)散列值
hsetnx 如果散列已經(jīng)存在,則不設(shè)置(防止覆蓋key)
hkeys 返回所有fileds
hvals 返回所有values
hlen 返回散列包含域(field)的數(shù)量
hdel 刪除散列指定的域(field)
hexists 判斷是否存在

hset 設(shè)置散列值
hget  獲取散列值
10.0.0.11:6379> hset stu1 name "mcw" age 18 height "170"
(integer) 3
10.0.0.11:6379> keys * 
1) "stu1"
10.0.0.11:6379> type stu1
hash
10.0.0.11:6379> hget stu1 name
"mcw"
10.0.0.11:6379> hget stu1 age
"18"
10.0.0.11:6379> hget stu1 height
"170"
10.0.0.11:6379> 
10.0.0.11:6379> hset new1 title "happy new year" content "ni hao"
(integer) 2
10.0.0.11:6379> 
hmset  設(shè)置多對(duì)散列值
hmget  獲取多對(duì)散列值
10.0.0.11:6379> 
10.0.0.11:6379> keys * 
1) "stu1"
2) "new1"
10.0.0.11:6379> hmget stu1 name age height
1) "mcw"
2) "18"
3) "170"
10.0.0.11:6379> 
hsetnx   如果散列已經(jīng)存在,則不設(shè)置(防止覆蓋key)
10.0.0.11:6379> hsetnx stu2 name "mcw2" age 18 height "168"
(error) ERR wrong number of arguments for "hsetnx" command
10.0.0.11:6379> 
10.0.0.11:6379> hsetnx stu2 name "mcw2" 
(integer) 1
10.0.0.11:6379> hsetnx stu2 name "mcw2" 
(integer) 0
10.0.0.11:6379> keys *
1) "stu2"
2) "stu1"
3) "new1"
10.0.0.11:6379> hsetnx stu2 name "mcw1"  
(integer) 0
10.0.0.11:6379> hget stu2 name  #存在stu2,使用hsetnx沒(méi)被修改
"mcw2"
10.0.0.11:6379> hset stu2 name "mcw1" 
(integer) 0
10.0.0.11:6379> hget stu2 name  #存在stu2,使用hset被修改了
"mcw1"
10.0.0.11:6379> 
hkeys     返回所有fileds
10.0.0.11:6379> keys *
1) "stu2"
2) "stu1"
3) "new1"
10.0.0.11:6379> hkeys stu1
1) "name"
2) "age"
3) "height"
10.0.0.11:6379> 
hvals     返回所有values
10.0.0.11:6379> keys *
1) "stu2"
2) "stu1"
3) "new1"
10.0.0.11:6379> hvals stu1
1) "mcw"
2) "18"
3) "170"
10.0.0.11:6379> 
hlen      返回散列包含域(field)的數(shù)量
10.0.0.11:6379> keys *
1) "stu2"
2) "stu1"
3) "new1"
10.0.0.11:6379> hkeys stu1
1) "name"
2) "age"
3) "height"
10.0.0.11:6379> hlen stu1
(integer) 3
10.0.0.11:6379> hkeys new1
1) "title"
2) "content"
10.0.0.11:6379> hlen new1
(integer) 2
10.0.0.11:6379> 
hdel     刪除散列指定的域(field)
10.0.0.11:6379> keys *
1) "stu2"
2) "stu1"
3) "new1"
10.0.0.11:6379> type stu1
hash
10.0.0.11:6379> 
10.0.0.11:6379> hkeys stu1
1) "name"
2) "age"
3) "height"
10.0.0.11:6379> hdel stu1 height  #刪除指定字段
(integer) 1
10.0.0.11:6379> hkeys stu1
1) "name"
2) "age"
10.0.0.11:6379> 
hexists    判斷是否存在
10.0.0.11:6379> keys *
1) "stu2"
2) "stu1"
3) "new1"
10.0.0.11:6379> type stu1
hash
10.0.0.11:6379> hkeys stu1
1) "name"
2) "age"
10.0.0.11:6379> hexists stu1 name   #存在字段返回1
(integer) 1
10.0.0.11:6379> hexists stu1 height #不存在字段返回0
(integer) 0
10.0.0.11:6379>

 

發(fā)布訂閱

主要應(yīng)用:通知,公告
可以作為消息隊(duì)列或者消息管道

一個(gè)發(fā)布,多個(gè)訂閱
發(fā)布:廣播電臺(tái)頻道能發(fā)送給所有接收這個(gè)頻道的人聲音信息
訂閱:很多人都能接收到這個(gè)廣播電臺(tái)的消息

比如qq群公告:一個(gè)發(fā)布,多個(gè)訂閱(接收到)

如下,一個(gè)發(fā)布者,兩個(gè)訂閱者,訂閱者1訂閱跟python和linux頻道有關(guān)的消息;訂閱者2訂閱和golang和Linux有感的消息

redis部署及各種數(shù)據(jù)類型使用命令詳解

當(dāng)發(fā)布者發(fā)布消息的時(shí)候,訂閱者1接收到了訂閱頻道python發(fā)來(lái)的消息

redis部署及各種數(shù)據(jù)類型使用命令詳解

當(dāng)發(fā)布者發(fā)布給linux頻道的時(shí)候,兩個(gè)訂閱人都接收到了消息。發(fā)布者這里還返回了幾個(gè)訂閱人接收到了消息。上面那條寫(xiě)錯(cuò)了發(fā)布到一個(gè)沒(méi)有人訂閱的頻道上,返回0個(gè)訂閱者

redis部署及各種數(shù)據(jù)類型使用命令詳解

發(fā)布人發(fā)布的頻道和接收的頻道,這樣寫(xiě)是需要精準(zhǔn)判斷,不能模糊匹配接收消息的

redis部署及各種數(shù)據(jù)類型使用命令詳解

當(dāng)訂閱者這里使用psubscribe的時(shí)候,后面變成了模式

redis部署及各種數(shù)據(jù)類型使用命令詳解

當(dāng)訂閱者使用psubscribe命令,且訂閱的頻道使用通配符的時(shí)候,那么發(fā)布者發(fā)布的能跟訂閱者模糊匹配到的頻道,就被訂閱者接收到了

redis部署及各種數(shù)據(jù)類型使用命令詳解

參考:https://www.cnblogs.com/pyyu/p/9843950.html redis 博客地址

到此這篇關(guān)于redis部署以及各種數(shù)據(jù)類型使用命令等詳解的文章就介紹到這了,更多相關(guān)redis數(shù)據(jù)類型使用命令內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文地址:https://www.cnblogs.com/machangwei-8/p/15969641.html

延伸 · 閱讀

精彩推薦
  • Redis詳解Redis復(fù)制原理

    詳解Redis復(fù)制原理

    與大多數(shù)db一樣,Redis也提供了復(fù)制機(jī)制,以滿足故障恢復(fù)和負(fù)載均衡等需求。復(fù)制也是Redis高可用的基礎(chǔ),哨兵和集群都是建立在復(fù)制基礎(chǔ)上實(shí)現(xiàn)高可用的...

    李留廣10222021-08-09
  • Redisredis實(shí)現(xiàn)排行榜功能

    redis實(shí)現(xiàn)排行榜功能

    排行榜在很多地方都能使用到,redis的zset可以很方便地用來(lái)實(shí)現(xiàn)排行榜功能,本文就來(lái)簡(jiǎn)單的介紹一下如何使用,具有一定的參考價(jià)值,感興趣的小伙伴們...

    乘月歸5022021-08-05
  • RedisRedis全量復(fù)制與部分復(fù)制示例詳解

    Redis全量復(fù)制與部分復(fù)制示例詳解

    這篇文章主要給大家介紹了關(guān)于Redis全量復(fù)制與部分復(fù)制的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Redis爬蟲(chóng)具有一定的參考學(xué)習(xí)...

    豆子先生5052019-11-27
  • RedisRedis 事務(wù)知識(shí)點(diǎn)相關(guān)總結(jié)

    Redis 事務(wù)知識(shí)點(diǎn)相關(guān)總結(jié)

    這篇文章主要介紹了Redis 事務(wù)相關(guān)總結(jié),幫助大家更好的理解和學(xué)習(xí)使用Redis,感興趣的朋友可以了解下...

    AsiaYe8232021-07-28
  • RedisRedis如何實(shí)現(xiàn)數(shù)據(jù)庫(kù)讀寫(xiě)分離詳解

    Redis如何實(shí)現(xiàn)數(shù)據(jù)庫(kù)讀寫(xiě)分離詳解

    Redis的主從架構(gòu),能幫助我們實(shí)現(xiàn)讀多,寫(xiě)少的情況,下面這篇文章主要給大家介紹了關(guān)于Redis如何實(shí)現(xiàn)數(shù)據(jù)庫(kù)讀寫(xiě)分離的相關(guān)資料,文中通過(guò)示例代碼介紹...

    羅兵漂流記6092019-11-11
  • RedisRedis的配置、啟動(dòng)、操作和關(guān)閉方法

    Redis的配置、啟動(dòng)、操作和關(guān)閉方法

    今天小編就為大家分享一篇Redis的配置、啟動(dòng)、操作和關(guān)閉方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧 ...

    大道化簡(jiǎn)5312019-11-14
  • Redisredis 交集、并集、差集的具體使用

    redis 交集、并集、差集的具體使用

    這篇文章主要介紹了redis 交集、并集、差集的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友...

    xiaojin21cen10152021-07-27
  • Redisredis中如何使用lua腳本讓你的靈活性提高5個(gè)逼格詳解

    redis中如何使用lua腳本讓你的靈活性提高5個(gè)逼格詳解

    這篇文章主要給大家介紹了關(guān)于redis中如何使用lua腳本讓你的靈活性提高5個(gè)逼格的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具...

    一線碼農(nóng)5812019-11-18
主站蜘蛛池模板: 97干在线| 久综合 | 91美女啪啪 | 欧美视频一区二区三区在线观看 | 国产一区成人 | av之家在线观看 | 男女视频免费看 | 宅男噜噜噜66国产在线观看 | 国产在线精品一区二区不卡 | 久久靖品 | 精品国产一区二区三区四区在线 | 视频一区二区不卡 | 99re热视频这里只精品 | 一区二区三区视频播放 | 成人性视频欧美一区二区三区 | 毛片a片免费看 | 视频在线91| 久久久久久免费 | ⅴideo裸体秀hd | 亚洲精品自在在线观看 | 久久第四色 | 成年免费观看视频 | 正在播放91| 色柚视频网站ww色 | 日韩毛片一区二区三区 | 精品久久久久久亚洲精品 | www.成人免费视频 | 在线亚洲欧美日韩 | 久久精品久久久久 | xxx18hd18hd日本 | 日本网站一区 | 国产电影av在线 | 石原莉奈日韩一区二区三区 | 午夜国产在线 | 高清国产福利 | 看免费毛片| 一级黄色在线免费观看 | 精品一区二区久久久久 | 欧美成人a| 久久国产秒 | 黄色试看视频 |