數據類型
Redis支持五種數據類型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
Redis命令
執行redis命令必須先要啟動客戶端。
#連接本地 redis-cli #連接遠程,加上Ip和密碼參數。 redis-cli -h 127.0.0.1 -p 6379 -a "password"
Redis key說明
可以用任何二進制的序列作為Key, 比如”key”,或者二進制圖片的內容,都能作為key。
比較好的習慣是通過冒號:,把Key分成幾段。如
user:zhangsan:name
字符串
127.0.0.1:6379> set myname redis OK 127.0.0.1:6379> get myname "redis" 127.0.0.1:6379>
設置多個值
127.0.0.1:6379> mset user:zhangsan:name zhangsan user:zhangsan:password 123456 OK 127.0.0.1:6379> mget user:zhangsan:name user:zhangsan:password 1) "zhangsan" 2) "123456"
Hash
存儲鍵值對
127.0.0.1:6379> hmset user:zhangsan name "zhangsan" password "123456" OK 127.0.0.1:6379> hvals user:zhangsan 1) "zhangsan" 2) "123456"
得到所有的Key
127.0.0.1:6379> hkeys user:zhangsan
1) "name"
2) "password"
得到單個值
127.0.0.1:6379> hget user:zhangsan password
"123456"
List
列表包含多個有序值,既可以作為隊列(先進先出),也可以作為棧(后進先出)
LRANGE獲取元素,指定第一個位置和最后一個位置,負數表示到末尾。
127.0.0.1:6379> rpush zhangsan:weblist www.baidu.com www.163.com www.google.com
(integer) 3
127.0.0.1:6379> lrange zhangsan:weblist 0 -1
1) "www.baidu.com"
2) "www.163.com"
3) "www.google.com"
刪除指定的值, 數字代表刪除多少個,為0時表示刪除所有。
127.0.0.1:6379> lrem zhangsan:weblist 0 www.163.com
(integer) 1
127.0.0.1:6379> lrange zhangsan:weblist 0 -1
1) "www.baidu.com"
2) "www.google.com"
像隊列一樣獲取第一個值彈出,lpop從左邊,rpop從右邊
127.0.0.1:6379> lpop zhangsan:weblist
"www.baidu.com"
127.0.0.1:6379> lrange zhangsan:weblist 0 -1
1) "www.google.com"
像隊列一樣壓入值,lpush左邊,rpush右邊
127.0.0.1:6379> lpush zhangsan:weblist www.sohu.com
(integer) 2
127.0.0.1:6379> lrange zhangsan:weblist 0 -1
1) "www.sohu.com"
2) "www.google.com"
阻塞list, 阻塞知道有值可以取到, 后面的參數表示等待的秒數,我這里例子是等待1分鍾
127.0.0.1:6379> brpop zhangsan:book 60
Set
無序,沒有重復值
127.0.0.1:6379> sadd zhangsan:book h1 h2 h3 h4 h5 (integer) 5 127.0.0.1:6379> smembers zhangsan:book 1) "h4" 2) "h3" 3) "h2" 4) "h1" 5) "h5"
取得兩個的交集:sinter
127.0.0.1:6379> sadd lisi:book h2 h3 h6 h7 (integer) 2 127.0.0.1:6379> smembers lisi:book 1) "h3" 2) "h2" 3) "h6" 4) "h7" 127.0.0.1:6379> sinter zhangsan:book lisi:book 1) "h3" 2) "h2"
找出不同的值
127.0.0.1:6379> sdiff zhangsan:book lisi:book
1) "h4"
2) "h5"
3) "h1"
有序set
string 類型的集合,不允許有重復的元素。
每個元素都會關聯一個double類型的分數。redis正是通過分數來為集合中的成員進行從小到大的排序。
127.0.0.1:6379> zadd sites 100 baidu 50 sohu 900 google (integer) 3 127.0.0.1:6379> zadd sites 1 pptv (integer) 1 127.0.0.1:6379> zadd sites 3 letv (integer) 1 127.0.0.1:6379> zrange sites 0 -1 1) "pptv" 2) "letv" 3) "sohu" 4) "baidu" 5) "google"
找出某一分數范圍的數據
127.0.0.1:6379> zrangebyscore sites 1 100 1) "pptv" 2) "letv" 3) "sohu" 4) "baidu"
設置數據到期
標記一個鍵為到期,EXPIRE命令
ttl查詢還剩余的時間
127.0.0.1:6379> set city beijing OK 127.0.0.1:6379> expire city 20 (integer) 1 127.0.0.1:6379> ttl city (integer) 17
SETEX直接創建一個有期限的string
127.0.0.1:6379> setex city 20 beijing OK 127.0.0.1:6379> ttl city (integer) 7
Java代碼操作Redis
Java使用Jedis包來操作redis
引入jedis:
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
示例
import redis.clients.jedis.Jedis; public class RedisTest { public static void main(String[] args) { //連接本地的 Redis 服務 Jedis jedis = new Jedis("localhost"); System.out.println("連接成功"); //字符串 jedis.set("runoobkey", "www.runoob.com"); // 獲取存儲的數據並輸出 System.out.println("redis 存儲的字符串為: "+ jedis.get("runoobkey")); //list jedis.lpush("site-list", "Runoob"); jedis.lpush("site-list", "Google"); jedis.lpush("site-list", "Taobao"); // 獲取存儲的數據並輸出 List<String> list = jedis.lrange("site-list", 0 ,2); for(int i=0; i<list.size(); i++) { System.out.println("列表項為: "+list.get(i)); } } }
最后,分享一份進階寶典《Java核心知識點整理.pdf》,覆蓋了JVM、Dubbo、鎖、高並發、反射、mybatis、Spring原理、微服務、Zookeeper、數據庫、數據結構等等,掃碼關注可以免費領取

