知識
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價值,我們在追求其視覺表現(xiàn)的同時,更側(cè)重于功能的便捷,營銷的便利,運營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!
Redis從基礎到精通(一)-推薦看看這篇!_wenjin文瑾
發(fā)表時間:2020-10-19
發(fā)布人:葵宇科技
瀏覽次數(shù):66
Redis大年夜基本到精曉
一 . Linux下安裝Redis
- 下載安裝包 redis官網(wǎng):https://redis.io/,下載完成 redis-4.0.9.tar.gz
- 啟動Linux,上傳安裝包至/home/wenjin目次下
- 移動安裝包至opt目次下 mv redis-4.0.9.tar.gz /opt
- 解壓 tar -zxvf redis-4.0.9.tar.gz
- 進入解壓后的文件,可以看到redis的設備文件
- 安裝gcc情況 yum install gcc-c++ 履行make敕令 make install敕令
- redis默認安裝在 /usr/local/bin
- 將redis設備文件復制至當前文件夾下 cp /opt/redis-4.0.9/redis.conf wconfig
- redis默認不是后臺啟動的,修改設備文件 vim redis.conf 修改daemonize no 為 daemonize yes
- 啟動redis辦事,在bin目次下履行 redis-server wconfig/redis.conf
- 應用redis自帶客戶端連接測試 redis-cli -p 6379
二 . Redis基本常識
redis有16個數(shù)據(jù)庫,默認為第0個數(shù)據(jù)庫
切換數(shù)據(jù)庫 select 序號
查看所有的key
127.0.0.1:6379[3]> keys *
1) "age"
127.0.0.1:6379[3]>
清除當前數(shù)據(jù)庫 FLUSHDB
清除所稀有據(jù)庫 FLUSHALL
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379>
Redis是單線程的!!
官方表示Redis是基于內(nèi)存操作的,CPU不是Redis的機能瓶頸,Redis的機能瓶頸是根據(jù)計算機的內(nèi)存和收集帶寬,既然可以應用單線程來實現(xiàn)就應用單線程實現(xiàn)了!
Redis是C說話寫的,官方供給的數(shù)據(jù)為100000+QPS,機能異常之高!
Redis為什么單線程還這么快?
1. 誤區(qū)1:高機能的辦事器必定是多線程的?
2. 誤區(qū)2:多線程(CPU高低文切換!)必定比單線程高!
核心:Redis是將所有的數(shù)據(jù)放在內(nèi)存中,所以說Redis應用單線程去操作效力就是最高的,(多線程CPU高低文切換耗時光!!),對于內(nèi)存體系來說,沒有高低文切換效力就是最高的!多次讀寫都是在一個CPU 上,在內(nèi)存情況下這個就是最佳籌劃!
三 . Redis五大年夜數(shù)據(jù)類型
萌芽未知敕令----Redis中文網(wǎng)站 http://www.redis.cn/commands.html# Redis-key
127.0.0.1:6379> keys * //查看當前庫所有的key
(empty list or set)
127.0.0.1:6379> flushall //清除所有的庫
OK
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set name wenjin
OK
127.0.0.1:6379> keys *
1) "name"
127.0.0.1:6379> set age 22
OK
127.0.0.1:6379> keys *
1) "name"
2) "age"
127.0.0.1:6379> exists name //查看key是否存在
(integer) 1
127.0.0.1:6379> exists name1
(integer) 0
127.0.0.1:6379> move name 1 //一出key到目標庫
(integer) 1
127.0.0.1:6379> keys *
1) "age"
127.0.0.1:6379> select 1 //切換庫
OK
127.0.0.1:6379[1]> keys *
1) "name"
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> keys *
1) "age"
127.0.0.1:6379> set name wenwen
OK
127.0.0.1:6379> keys *
1) "name"
2) "age"
127.0.0.1:6379> expire name 10 //設置key過不時光,單位是秒
(integer) 1
127.0.0.1:6379> ttl name //查看當前key的殘剩時光
(integer) 6
127.0.0.1:6379> ttl name
(integer) 3
127.0.0.1:6379> ttl name
(integer) 0
127.0.0.1:6379> type age //查看key的類型
string
127.0.0.1:6379>
String類型
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set name1 wenjin
OK
127.0.0.1:6379> get name1
"wenjin"
127.0.0.1:6379> append name1 ",qianyu" //追加字符串
(integer) 17
127.0.0.1:6379> get name1
"wenjin,qianyu"
127.0.0.1:6379> append name2 "hello" //追加字符串,如不雅當緇ぶ符串不存在,則為set
(integer) 5
127.0.0.1:6379> strlen name2 //查看字符串長度!
(integer) 5
127.0.0.1:6379>
做自增i++,例如瀏覽量
127.0.0.1:6379> set view 0
OK
127.0.0.1:6379> get view
"0"
127.0.0.1:6379> incr view //自加
(integer) 1
127.0.0.1:6379> incr view
(integer) 2
127.0.0.1:6379>
127.0.0.1:6379> incr view
(integer) 3
127.0.0.1:6379> decr view //自減
(integer) 2
127.0.0.1:6379> decr view
(integer) 1
127.0.0.1:6379> decr view
(integer) 0
127.0.0.1:6379> decr view
(integer) -1
127.0.0.1:6379> incrby view 30 //自加多
(integer) 29
127.0.0.1:6379> decrby view 20 //自減多
(integer) 9
127.0.0.1:6379>
字符串調(diào)換和朝長進步
//字符串范圍 range
127.0.0.1:6379> set key1 "hello,wenjin"
OK
127.0.0.1:6379> get key1
"hello,wenjin"
127.0.0.1:6379> getrange key1 0 4 //朝長進步字符串【0,3】
"hello"
127.0.0.1:6379> get key1
"hello,wenjin"
127.0.0.1:6379> getrange key1 0 -1 //獲取全部字符串
"hello,wenjin"
127.0.0.1:6379> set key2 abdfdgdjkj
OK
127.0.0.1:6379> get key2
"abdfdgdjkj"
127.0.0.1:6379> setrange key2 2 xxx //字符串調(diào)換
(integer) 10
127.0.0.1:6379> get key2
"abxxxgdjkj"
重點:setex和setnx基本用法及分布式鎖應用處景
#setex (set with expire) //設置過不時光
#setnx (set if not existr) //設置不存在的key-value (在分布式鎖中常用)
127.0.0.1:6379> setex key3 40 danaomeng //設置key3的值袈溱40秒后過時
OK
127.0.0.1:6379> ttl key3 //查看key3的過不時光
(integer) 35
127.0.0.1:6379> ttl key3
(integer) 32
127.0.0.1:6379> setnx mykey hahhahaha //如不雅meykey不存在,則設置mykey
(integer) 1
127.0.0.1:6379> keys *
1) "mykey"
2) "key1"
3) "key2"
4) "i"
5) "name"
127.0.0.1:6379> setnx mykey wewewewe //如不雅mykey存在,則設置掉敗
(integer) 0
127.0.0.1:6379> keys *
1) "mykey"
2) "key1"
3) "key2"
4) "i"
5) "name"
127.0.0.1:6379> get mykey
"hahhahaha"
批量設置字符串
#mset #mget
127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3 //同時設置多個值
OK
127.0.0.1:6379> mget k1 k2 k3 //同時獲取多個值
1) "v1"
2) "v2"
3) "v3"
127.0.0.1:6379> keys *
1) "k3"
2) "k2"
3) "k1"
127.0.0.1:6379> msetnx k1 v1 k4 v4 //msetnx是一個原子性操作,要么一路成功!要么一路掉敗!
(integer) 0
127.0.0.1:6379>
設置對象
#對象
set user:1 {name:wenjin,age:22} #這只一個user:1對象,值用一個json字符串來保存一個對象!
#這里key是一個奇妙的設計: user:{id}:{filed}
127.0.0.1:6379> mset user:1:name liusan user:1:age 33
OK
127.0.0.1:6379> mget user:1:name user:1:age
1) "liusan"
2) "33"
127.0.0.1:6379>
getset用法
#getset //先get后set
127.0.0.1:6379> getset desc redis //如不雅不存在值袈瀲,則返回nil
(nil)
127.0.0.1:6379> get desc
"redis"
127.0.0.1:6379> getset desc mongodb //如不雅存在值,則返回本來的值,設置新的值!
"redis"
127.0.0.1:6379> get desc
"mongodb"
127.0.0.1:6379>
String類型應用處景:value除了我們的字符串還可所以數(shù)字
* 計數(shù)器
* 統(tǒng)計多單位數(shù)量
* 粉絲數(shù)
* 對象緩存存儲
* 等等等等
**
基本部分先寫到這里,后期內(nèi)容我會進一步跟進,迎接各位小伙伴一路商量!
**
相關案例查看更多
相關閱讀
- asp網(wǎng)站
- 網(wǎng)站建設公司地址
- 網(wǎng)絡公司
- 百度快速排名
- 網(wǎng)站建設百度官方
- 網(wǎng)絡公司報價
- 全國前十名小程序開發(fā)公司
- 模版信息
- 網(wǎng)站建設首選
- 迪慶小程序開發(fā)
- 云南小程序開發(fā)公司哪家好
- 網(wǎng)站建設靠譜公司
- 云南網(wǎng)站建設首頁
- 網(wǎng)絡公司聯(lián)系方式
- 小程序開發(fā)
- 軟件定制
- 網(wǎng)站建設價格
- 南通小程序制作公司
- 小程序定制開發(fā)
- 網(wǎng)站開發(fā)
- 網(wǎng)站制作
- 云南省住房建設廳網(wǎng)站
- 云南百度小程序
- 網(wǎng)站建設選
- 昆明做網(wǎng)站建設的公司排名
- 昆明軟件公司
- 網(wǎng)站建設專家
- 云南網(wǎng)絡營銷顧問
- 云南軟件開發(fā)
- 云南網(wǎng)站建設電話