**string類型介紹**
與大多編程語言中的字符串類型一樣,Redis的字符串也是字符序列,它是Redis中最為基礎的數據存儲類型,具有以下特點:
字符串類型是Redis中二進制安全的,這就意味著它們都有一個已知的長度,可以接受任何格式的數據(如信息交換中常用的Json格式字符串,甚至圖像數據)。
Redis中字符串類型最多可以容納的數據長度可達512M。
**string類型相關命令**
Redis字符串命令主要用于管理字符串值,主要包括以下命令:
**1、 set命令**
set命令用于設置指定鍵的值,具體格式為:
set key value [ex 秒數] [px 毫秒數] [nx/xx]
各個選項的含義如下:
ex:設置指定的到期時間,單位為秒
px:設置指定的到期時間,單位為毫秒,如果ex和px同時寫,則以后面的有效期為準
nx:如果對應key不存在則創建
xx:如果對應key存在則修改其值
示例1:
```
127.0.0.1:6379> set mykey "this is redis"
OK
```
在示例1中,用set命令來設置key、value,操作成功后終端打印出“OK”。
**2、get命令**
get命令用來獲取指定鍵的值,如果鍵不存在,則返回nil,如果返回值不是字符串,則返回錯誤。具體格式為:
get key
示例2:
```
127.0.0.1:6379> get mykey"this is redis"
127.0.0.1:6379> get yourkey(nil)
```
**3、mset命令**
mset命令用于一次性設置多個鍵和值,和set命令一樣操作成功后返回字符串“OK”。具體格式為:
mset key1 value1 key2 value2 ...
示例3:
```
127.0.0.1:6379> mset key1 "this is key1" key2 "this is key2"
OK
127.0.0.1:6379> get key1
"this is key1"
127.0.0.1:6379> get key2
"this is key2"
```
**4、mget命令**
mget命令用于返回所有給定鍵的值。對于某個不存在值的鍵或者不存在的鍵,返回nil,否則返回指定鍵的值列表。具體格式為:
mget key1 key2 ...
示例4:
```
127.0.0.1:6379> set key1 "hello"
OK
127.0.0.1:6379> set key2 "world"
OK
127.0.0.1:6379> mget key1 key2 key3
1) "hello"
2) "world"
3) (nil)
```
**5、setrange命令**
setrange命令將字符串中偏移量為offset后的子串覆蓋為指定的值,該命令返回修改后的字符串的長度。具體格式為:
setrange key offset value
如果偏移量offset > 原字符串長度,不足部分用0x00補全。
示例5:
```
127.0.0.1:6379> set key1 "Hello World"
OK
127.0.0.1:6379> setrange key1 6 "Redis"
(integer) 11
127.0.0.1:6379> get key1
"Hello Redis"
127.0.0.1:6379> setrange key1 15 "Hei"
(integer) 18
127.0.0.1:6379> get key1
"Hello Redis\x00\x00\x00\x00Hei"
```
**6、setex命令**
setex命令用來設置指定鍵的值,并指定該鍵值對應的存在時間(單位:秒)。具體格式如下:
setex key seconds value
示例6:
```
127.0.0.1:6379> setex key1 5 "hello" // 5s的過期時間
OK
127.0.0.1:6379> get key1 // 馬上訪問
"hello"
127.0.0.1:6379> get key1 // 5s后訪問
(nil)
```
7、setnx命令
setnx命令也可以用來設置指定鍵的字符串值,但該命令在設置前需要檢查指定鍵是否已經存在。如果存在,則該命令的作用和set命令一樣,操作完成后返回1,否則不重新設置已經存在的鍵的字符串值,直接返回0。具體格式如下:
setnx key value
示例7:
```
127.0.0.1:6379> setnx key1 "Hello"
(integer) 1
127.0.0.1:6379> setnx key1 "World"
(integer) 0
127.0.0.1:6379> get key1
"Hello"
```
**8、append命令**
故名思議,append命令將字符串追加到指定鍵的原值上,返回值為新字符串的長度。具體格式為:
append key value
示例8:
```
127.0.0.1:6379> set key1 "Hello "
OK
127.0.0.1:6379> append key1 "World"
(integer) 11
127.0.0.1:6379> get key1
"Hello World"
```
**9、getrange命令**
getrange命令獲取字符串指定范圍的子串,具體格式為:
getrange key start stop
getrange命令返回字符串中下標范圍為[start,stop]范圍的值。類似python,該命令下標支持負偏移量,右邊第一個下標為-1。假設字符串的長度為length,getrange根據以下原則決定返回值:
當start > length,則返回空字符串
當stop >= length,則截取至字符串尾
如果start > stop,則返回空字符串
如果0 <= start <= stop < length,返回指定范圍的子串
示例9:
```
127.0.0.1:6379> set key1 "This is getrange testing"
OK
127.0.0.1:6379> getrange key1 5 6
"is"
127.0.0.1:6379> getrange key1 100 200
""
127.0.0.1:6379> getrange key1 5 100
"is getrange testing"
```
**10、incr命令**
incr命令用于自增一個指定鍵對應的整數值并返回新的值。如果該鍵不存在,則創建該鍵,對應的value被置為0然后執行自增操作,如果該鍵對應的值不能轉換為整數,則返回錯誤。
具體格式為:
incr key
示例8:
```
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> set key1 10
OK
127.0.0.1:6379> incr key1
(integer) 11
127.0.0.1:6379> incr key2
(integer) 1
127.0.0.1:6379> set key2 "non"
OK
127.0.0.1:6379> incr key2
(error) ERR value is not an integer or out of range
127.0.0.1:6379>
```
**10、incrby命令**
該命令與incr命令相似,不同的是:incrby命令可以自定義自增值,這也是命令中“by”的含義。具體格式為:
incrby key k
示例9:
```
127.0.0.1:6379> set key1 10
OK
127.0.0.1:6379> incrby key1 5
(integer) 15
127.0.0.1:6379> get key1
"15"
```
**11、incrbyfloat命令**
從字面上我們就可以看出incrbyfloat是和incrby相似的命令,不同的是:incrbyfloat對指定鍵的值自增一個浮點數。該命令返回修改后的新值。具體格式為:
incrbyfloat by f
示例10:
```
127.0.0.1:6379> set key1 100
OK
127.0.0.1:6379> incrbyfloat key1 0.5
"100.5"
```
**12、decr和decrby命令**
decr命令和incr命令作用相反,具體格式如下:
decr key
decrby命令和incrby命令作用相反,具體格式如下:
decrby key decrement
**13、strlen命令**
strlen命令返回指定鍵的字符串值的長度。具體格式為:
strlen key
示例13:
```
127.0.0.1:6379> set key1 "Hello Redis"
OK
127.0.0.1:6379> strlen key1
(integer) 11
```
**14、setbit命令**
setbit命令用來設置指定鍵的字符串在offset偏移量上對應二進制位上的值,并返回該為上的舊值。由于該命令操作的是二進制位,所以設置的新值只能為0或1。如果指定key不存在,則創建一個新值并在指定的offset上設置二進制值。如果offset大于字符串的長度,不足部分用0填充后在指定offset上設置二進制值。具體格式如下:
setbit key offset value
示例14:
```
127.0.0.1:6379> set key1 "Hello Redis"
OK
127.0.0.1:6379> strlen key1
(integer) 11
```
15、getbit命令
與setbit命令相對應,getbit命令用于返回指定偏移量offset上二進制位的值。如果offset大于value的長度,或者指定key不存在,則返回0。具體格式如下:
getbit key offset
示例15:
```
127.0.0.1:6379> setbit key1 7 1
(integer) 1
127.0.0.1:6379> getbit key1 7
(integer) 1
127.0.0.1:6379> getbit key1 100
(integer) 0
```
- 技能知識點
- 對死鎖問題的理解
- 文件系統原理:如何用1分鐘遍歷一個100TB的文件?
- 數據庫原理:為什么PrepareStatement性能更好更安全?
- Java Web程序的運行時環境到底是怎樣的?
- 你真的知道自己要解決的問題是什么嗎?
- 如何解決問題
- 經驗分享
- GIT的HTTP方式免密pull、push
- 使用xhprof對php7程序進行性能分析
- 微信掃碼登錄和使用公眾號方式進行掃碼登錄
- 關于curl跳轉抓取
- Linux 下配置 Git 操作免登錄 ssh 公鑰
- Linux Memcached 安裝
- php7安裝3.4版本的phalcon擴展
- centos7下php7.0.x安裝phalcon框架
- 將字符串按照指定長度分割
- 搜索html源碼中標簽包的純文本
- 更換composer鏡像源為阿里云
- mac 隱藏文件顯示/隱藏
- 谷歌(google)世界各國網址大全
- 實戰文檔
- PHP7安裝intl擴展和linux安裝icu
- linux編譯安裝時常見錯誤解決辦法
- linux刪除文件后不釋放磁盤空間解決方法
- PHP開啟異步多線程執行腳本
- file_exists(): open_basedir restriction in effect. File完美解決方案
- PHP 7.1 安裝 ssh2 擴展,用于PHP進行ssh連接
- php命令行加載的php.ini
- linux文件實時同步
- linux下php的psr.so擴展源碼安裝
- php將字符串中的\n變成真正的換行符?
- PHP7 下安裝 memcache 和 memcached 擴展
- PHP 高級面試題 - 如果沒有 mb 系列函數,如何切割多字節字符串
- PHP設置腳本最大執行時間的三種方法
- 升級Php 7.4帶來的兩個大坑
- 不同域名的iframe下,fckeditor在chrome下的SecurityError,解決辦法~~
- Linux find+rm -rf 執行組合刪除
- 從零搭建Prometheus監控報警系統
- Bug之group_concat默認長度限制
- PHP生成的XML顯示無效的Char值27消息(PHP generated XML shows invalid Char value 27 message)
- XML 解析中,如何排除控制字符
- PHP各種時間獲取
- nginx配置移動自適應跳轉
- 已安裝nginx動態添加模塊
- auto_prepend_file與auto_append_file使用方法
- 利用nginx實現web頁面插入統計代碼
- Nginx中的rewrite指令(break,last,redirect,permanent)
- nginx 中 index try_files location 這三個配置項的作用
- linux安裝git服務器
- PHP 中運用 elasticsearch
- PHP解析Mysql Binlog
- 好用的PHP學習網(持續更新中)
- 一篇寫給準備升級PHP7的小伙伴的文章
- linux 安裝php7 -系統centos7
- Linux 下多php 版本共存安裝
- PHP編譯安裝時常見錯誤解決辦法,php編譯常見錯誤
- nginx upstream模塊--負載均衡
- 如何解決Tomcat服務器打開不了HOST Manager的問題
- PHP的內存泄露問題與垃圾回收
- Redis數據結構 - string字符串
- PHP開發api接口安全驗證
- 服務接口API限流 Rate Limit
- php內核分析---內存管理(一)
- PHP內存泄漏問題解析
- 【代碼片-1】 MongoDB與PHP -- 高級查詢
- 【代碼片-1】 php7 mongoDB 簡單封裝
- php與mysql系統中出現大量數據庫sleep的空連接問題分析
- 解決crond引發大量sendmail、postdrop進程問題
- PHP操作MongoDB GridFS 存儲文件,如圖片文件
- 淺談php安全
- linux上keepalived+nginx實現高可用web負載均衡
- 整理php防注入和XSS攻擊通用過濾