Redis 基礎概念+應用
阿新 • • 發佈:2018-12-16
簡介
全稱:Remote Dictionary Server
開發者: Salvatore Sanfilippo
型別:NoSQL資料庫
定義:Redis是一個key-value儲存系統
Logo:
Redis資料型別
Redis支援五種資料型別:字串(String)、雜湊(Map)、列表(List)、集合(Sets)和有序集合(Sorted Sets)。
String
String是Redis最基本的資料型別,一個key對應一個value。它可以包含任何資料,比如jpg圖片或者序列化的物件。一個鍵最大能儲存512MB。下面通過示例瞭解如何使用:
127.0.0.1:6379> set name jujianfei OK 127.0.0.1:6379> get name "jujianfei"
Hash
Hash是一個鍵值對集合。示例如下:
127.0.0.1:6379> hmset firsthash field1 name field2 jujianfei
OK
127.0.0.1:6379> hget firsthash field1
"name"
127.0.0.1:6379> hget firsthash field2
"jujianfei"
示例中我們使用了Redis HMSET和HGET命令,HMSET設定了兩個field -> value對,HGET獲取對應的value。每個Hash可以儲存2 32 -1鍵值對 。
List
List是簡單的字串列表,按照插入順序排序。示例如下:
127.0.0.1:6379> lpush names jujianfei zhangmeihong happy
(integer) 3
127.0.0.1:6379> lrange names 0 2
1) "happy"
2) "zhangmeihong"
3) "jujianfei"
List可儲存232 -1個元素。
Set
Set是String型別的無序集合。示例如下:
127.0.0.1:6379> sadd nameset jujianfei zhangmeihong happy (integer) 3 127.0.0.1:6379> sadd nameset love (integer) 1 127.0.0.1:6379> sadd nameset love (integer) 0 127.0.0.1:6379> smembers nameset 1) "zhangmeihong" 2) "happy" 3) "love" 4) "jujianfei"
sadd命令:新增一個string元素到key對應的set集合中,成功返回1;如果元素已經在集合中存在,返回0。容量同List。
Sorted Set
Sorted Set也可寫為ZSet,它和Set一樣,也是String型別元素的集合,且不允許重複的成員。不同的是每個元素都會關聯一個double型別的值。Redis正是通過這個值來為集合中的成員進行從小到大的排序。這個double值可以重複。示例如下:
127.0.0.1:6379> zadd fruit 3 apple
(integer) 1
127.0.0.1:6379> zadd fruit 0 banana
(integer) 1
127.0.0.1:6379> zadd fruit 2 pineapple
(integer) 1
127.0.0.1:6379> zrangebyscore fruit 0 2
1) "banana"
2) "pineapple"
127.0.0.1:6379> zrangebyscore fruit 0 1
1) "banana"
127.0.0.1:6379> zrange fruit 0 2
1) "banana"
2) "pineapple"
3) "apple"
Redis命令
Redis命令用於在Redis服務上執行操作。要在Redis服務上執行命令需要一個Redis客戶端。
啟動Redis伺服器
C:\Users\Administrator>redis-server
[9644] 15 Jul 11:07:09.342
# Warning: no config file specified, using the default config.
In order to specify a config file use redis-server /path/to/redis.conf
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 3.2.100 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 9644
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
[9644] 15 Jul 11:07:09.346 # Server started, Redis version 3.2.100
[9644] 15 Jul 11:07:09.347 * DB loaded from disk: 0.000 seconds
[9644] 15 Jul 11:07:09.347 * The server is now ready to accept connections on port 6379
啟動Redis客戶端
開啟cmd,輸入命令redis-cli,該命令會連線本地的Redis服務。
C:\Users\Administrator>redis-cli
127.0.0.1:6379>
Java使用Redis
引入依賴:
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
示例程式碼:
public class RedisTest {
public static void main(String[] args) {
//連線本地的Redis服務
Jedis jedis = new Jedis("localhost");
//如果有密碼,需輸入密碼
jedis.auth("jujianfei");
System.out.println("連線成功");
//檢視服務是否執行
System.out.println("服務正在執行:" + jedis.ping());
//String使用
jedis.set("redisTest", "Hello Redis");
System.out.println("redis儲存的字串為:" + jedis.get("redisTest"));
//List使用
jedis.lpush("fileTypes","txt");
jedis.lpush("fileTypes","docx");
jedis.lpush("fileTypes","ppt");
List<String> list = jedis.lrange("fileTypes",0,2);
list.forEach(x -> System.out.println("列表項為:"+ x));
jedis.close();
}
}
列印結果:
連線成功
服務正在執行:PONG
redis儲存的字串為:Hello Redis
列表項為:ppt
列表項為:docx
列表項為:txt