## Redis命令
### redis數據結構 – strings
```
set mystr "hello world!" //設置字符串類型
get mystr //讀取字符串類型
```
>字符串類型的用法就是這么簡單,因為是二進制安全的,所以你完全可以把一個圖片文件的內容作為字符串來存儲。
另外,我們還可以通過字符串類型進行數值操作:
```
127.0.0.1:6379> set mynum "2"
OK
127.0.0.1:6379> get mynum
"2"
127.0.0.1:6379> incr mynum
(integer) 3
127.0.0.1:6379> get mynum
"3"
```
> 在遇到數值操作時,redis會將字符串類型轉換成數值。
利用redis的INCR、INCRBY、DECR、DECRBY等指令來實現原子計數的效果.
### redis數據結構 – lists
* redis中的lists在底層實現上并不是數組,而是鏈表,鏈表型lists的元素定位會比較慢。
* lists的常用操作包括LPUSH、RPUSH、LRANGE等。我們可以用LPUSH在lists的左側插入一個新元素,用RPUSH在lists的右側插入一個新元素,用LRANGE命令從lists中指定一個范圍來提取元素。
```
//新建一個list叫做mylist,并在列表頭部插入元素"1"
127.0.0.1:6379> lpush mylist "1"
(integer) 1 //返回當前mylist中的元素個數
127.0.0.1:6379> rpush mylist "2" //在mylist右側插入元素"2"
(integer) 2
127.0.0.1:6379> lpush mylist "0" //在mylist左側插入元素"0"
(integer) 3
127.0.0.1:6379> lrange mylist 0 1 //列出mylist中從編號0到編號1的元素
1) "0"
2) "1"
127.0.0.1:6379> lrange mylist 0 -1 //列出mylist中從編號0到倒數第一個元素
1) "0"
2) "1"
3) "2"
```
>lists的應用相當廣泛,隨便舉幾個例子:
1.我們可以利用lists來實現一個消息隊列,而且可以確保先后順序,不必像MySQL那樣還需要通過ORDER BY來進行排序。
2.利用LRANGE還可以很方便的實現分頁的功能。
3.在博客系統中,每片博文的評論也可以存入一個單獨的list中。
### redis數據結構 – 集合Set
* redis的集合,是一種無序的集合,集合中的元素沒有先后順序。
* 集合是通過哈希表實現的,所以添加,刪除,查找的復雜度都是O(1)。
* 集合相關的操作也很豐富,如添加新元素、刪除已有元素、取交集、取并集、取差集等。
```
127.0.0.1:6379> sadd myset "one" //向集合myset中加入一個新元素"one"
(integer) 1
127.0.0.1:6379> sadd myset "two"
(integer) 1
127.0.0.1:6379> smembers myset //列出集合myset中的所有元素
1) "one"
2) "two"
127.0.0.1:6379> sismember myset "one" //判斷元素1是否在集合myset中,返回1表示存在
(integer) 1
127.0.0.1:6379> sismember myset "three" //判斷元素3是否在集合myset中,返回0表示不存在
(integer) 0
127.0.0.1:6379> sadd yourset "1" //新建一個新的集合yourset
(integer) 1
127.0.0.1:6379> sadd yourset "2"
(integer) 1
127.0.0.1:6379> smembers yourset
1) "1"
2) "2"
127.0.0.1:6379> sunion myset yourset //對兩個集合求并集
1) "1"
2) "one"
3) "2"
4) "two"
```
對于集合的使用,也有一些常見的方式,比如,QQ有一個社交功能叫做“好友標簽”,大家可以給你的好友貼標簽,比如“大美女”、“土豪”、“歐巴”等等,這時就可以使用redis的集合來實現,把每一個用戶的標簽都存儲在一個集合之中。
### redis數據結構 – 有序集合
* redis不但提供了無序集合(sets),還很體貼的提供了有序集合(sorted sets)。
* 有序集合中的每個元素都關聯一個序號(score),這便是排序的依據。
* 很多時候,我們都將redis中的有序集合叫做zsets,這是因為在redis中,有序集合相關的操作指令都是以z開頭的,比如zrange、zadd、zrevrange、zrangebyscore等等
```
//新增一個有序集合myzset,并加入一個元素baidu.com,給它賦予的序號是1:
復制代碼代碼如下:
127.0.0.1:6379> zadd myzset 1 baidu.com
(integer) 1
//向myzset中新增一個元素360.com,賦予它的序號是3
127.0.0.1:6379> zadd myzset 3 360.com
(integer) 1
//向myzset中新增一個元素google.com,賦予它的序號是2
127.0.0.1:6379> zadd myzset 2 google.com
(integer) 1
//列出myzset的所有元素,同時列出其序號,可以看出myzset已經是有序的了。
127.0.0.1:6379> zrange myzset 0 -1 with scores
1) "baidu.com"
2) "1"
3) "google.com"
4) "2"
5) "360.com"
6) "3"
//只列出myzset的元素
127.0.0.1:6379> zrange myzset 0 -1
1) "baidu.com"
2) "google.com"
3) "360.com"
```
### redis數據結構 – 哈希
最后要給大家介紹的是hashes,即哈希。哈希是從redis-2.0.0版本之后才有的數據結構。
hashes存的是字符串和字符串值之間的映射,比如一個用戶要存儲其全名、姓氏、年齡等等,就很適合使用哈希。
```
//建立哈希,并賦值
127.0.0.1:6379> HMSET user:001 username antirez password P1pp0 age 34
OK
//列出哈希的內容
127.0.0.1:6379> HGETALL user:001
1) "username"
2) "antirez"
3) "password"
4) "P1pp0"
5) "age"
6) "34"
//更改哈希中的某一個值
127.0.0.1:6379> HSET user:001 password 12345
(integer) 0
//再次列出哈希的內容
127.0.0.1:6379> HGETALL user:001
1) "username"
2) "antirez"
3) "password"
4) "12345"
5) "age"
6) "34"
```
- 版權
- 博客主題
- 如何不去做運行3.5G-docker鏡像的工程師
- 預備主題
- FastDFS快速入門
- mysql定時創建月表
- SpringMVC-Restful
- Docker生態系統
- The Docker Ecosystem: An Introduction to Common Components
- docker監控指標
- 基于etcd服務發現的overlay跨多宿主機容器網絡
- etcd:從應用場景到實現原理的全方位解讀
- docker存儲驅動詳解
- 使用docker/engine-api操作docker
- 提升Docker安全性
- docker安全之用戶資源隔離
- marathon
- 開始
- 安裝mararhon
- 高可用模式
- 使用marathon
- 應用的部署
- 架構組件
- Dubbo與Zookeeper、SpringMVC整合和使用(負載均衡、容錯)
- Openstack架構解析
- haproxy
- Ubuntu系統安裝截圖
- mesos官方文檔
- 關于譯者
- mesos基礎
- Mesos架構
- 視頻與ppt
- 讓mesos跑起來
- 快速入門
- 配置
- Containerizer
- Docker Containerizer
- 監控
- 博客文章集
- 煮餃子與mesos之間妙不可言的關系
- linux運維
- 基礎篇
- 進階篇
- mysql
- Ubuntu14.04安裝mysql5.6
- MySQL 5.6 replicate原理與實踐
- mysql性能
- redis
- redis安裝及基礎知識
- redis數據結構
- redis命令
- redis數據持久化
- Redis主從復制
- redis集群
- 其他