1. 程式人生 > >Redis 基礎概念+應用

Redis 基礎概念+應用

簡介

全稱: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