redis常用命令及客戶端的使用


數據類型

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、數據庫、數據結構等等,掃碼關注可以免費領取


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM