1.安裝篇
a) Window版本64位下載地址
https://github.com/microsoftarchive/redis/releases
下載完成後
Windows 解壓 redis壓縮包
啓動redis-server.exe
b) Linux版本下載
下載完成之後
Linux 解壓 tar-zxvf redis 壓縮包
啓動redis-server.exe
2.安裝redis集羣篇
暫時不考慮
3.命令篇
遠程服務執行命令
語法:redis-cli -h host -p port -a password
host:ip
port:端口
password: 密碼
示例:redis-cli -h 127.0.0.1 -p 6379 -a "wll123"
redis 鍵key
redistext:0>set run redis
鍵爲run 值爲redis set語法
給鍵一個redis的值
redistext:0>del run
刪除名爲run的鍵key
redistext:0>dump run
序列化給定的key並返回被序列化的值
redistext:0>exists key
返回1爲存在返回0不存在
redistext:0>expire run 10
設置key的過期時間,10的單位爲秒
redistext:0>pexpire run 1000
設置key的過期時間以毫秒計
redistext:0>move wll 1
移動當前的key到指定的db中
redistext:0>select 1
切換庫
redistext:1>persist wll
移除當前ley的過期時間
redistext:1>randomkey
隨機返回當前庫的key
redistext:1>rename wll gyx
修改當前的key名字 庫中若是有 替換庫中的key
redistext:1>renamenx wll gyx
修改當前key的名字 庫中沒有時纔會修改成功
redistext:1>type wll
返回key的存儲類型
4.類型篇
4.1Redis字符串(String)
redistext:1>set wll 2365900668
添加key爲wll 值爲2365900668
redistext:1>get wll
獲取key爲wll的val值
redistext:1>getrange wll 2 5
獲取wll的指定字符 2 字符開始 5字符結束
redistext:1>getset wll 93075627
給定key爲wll的一個新的值 返回舊的值
redistext:1>getbit wll 11
例如java char值得取值範圍 如何把a變成b 修改char值
redistext:1>mget wll gyx
獲取所有給定的key
redistext:1>setnx job kil
只有設置的key值不存在時纔會爲key設置指定的值 (set區別)
redistext:1>strlen wll
返回key的長度
redistext:1>mset key1 wll key2 gyx
設置一個或者多個key-val對
redistext:1>append wll 111
APPEND 命令將指定的 value 追加到該 key 原來值(value)的末尾 (值是字符串)
4.2Redis哈希(hash)
Redis hash 是一個string類型的field和value的映射表,hash特別適合用於存儲對象。
Redis 中每個 hash 可以存儲 2的32次方- 1 鍵值對(40多億)。
命令:
redistext:1>hmset run wll "瞬發" gyx "mhg"
同時將多個field-value(域-值)對設置到哈希表的key中 key爲run wll gyx 域-值 redistext:1>hmget run wll gyx
獲取 run中的wll gyx域中的值
redistext:1>hdel run wll
刪除一個或者多個hash表字段
redistext:1>hexists run gyx
查看hash表key中,指定的字段是否存在
redistext:0>hset site redis redis.com
添加site hash表中添加key爲redis val爲redis.com
redistext:0>hget site redis
獲取 site hash表中key爲redis的value值
redistext:0>hkeys site
獲取所有hash表中的所有字段
redistext:0>hlen site
獲取hash表字段的數量
redistext:0>hvals site
獲取hash表中所有的值
4.3Redis列表(list)、
Redis列表是簡單的字符串列表,按照插入順序排序。你可以添加一個元素到列表的頭部(左邊)或者尾部(右邊)
一個列表最多可以包含 232 - 1 個元素 (4294967295, 每個列表超過40億個元素)。
redistext:0>blpop wll 10
移出並獲取列表的第一個元素,如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止。
redistext:0>brpop wll 10
移出並獲取列表的最後一個元素, 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止。
redistext:0>lindex wll 0
通過索引獲取列表元素
redistext:0>linsert wll before "age" "pipi"
命令用於在列表的元素前或者後插入元素。當指定元素不存在於列表中時,不執行任何操作。
redistext:0>llen wll
獲取列表的長度
redistext:0>lpop wll
移除並獲取列表的第一個元素
redistext:0>lpush wll ju ku
將一個或多個值插入到列表頭部。如果 key不存在,一個空列表會被創建並執行 LPUSH操作。當key存在但不是列表類型時,返回一個錯誤。
redistext:0>lrem wll -4 aa
根據參數 COUNT 的值,移除列表中與參數 VALUE 相等的元素。
count > 0 : 從表頭開始向表尾搜索,移除與 VALUE 相等的元素,數量爲 COUNT 。
count < 0 : 從表尾開始向表頭搜索,移除與 VALUE 相等的元素,數量爲 COUNT 的絕對值。
count = 0 : 移除表中所有與 VALUE 相等的值。
redistext:0>lpushx wll jui
將一個值插入到已存在的列表頭部
redistext:0>lset wll 0 kij
向列表的指定位置添加值
redistext:0>rpush wll ok ok
列表添加一個或者多個值與lpush區別 lpush添加頭部
4.4redis集合(set)
Redis 的 Set 是 String 類型的無序集合。集合成員是唯一的,這就意味着集合中不能出現重複的數據。
Redis 中集合是通過哈希表實現的,所以添加,刪除,查找的複雜度都是 O(1)。
集合中最大的成員數爲 232 - 1 (4294967295, 每個集合可存儲40多億個成員)。
命令:
redistext:0>sadd buba wll
向集合中添加一個或者多個成員
redistext:0>smembers buba
查看集合的成員
redistext:0>scard buba
獲取集合的成員數
redistext:0>sdiff key1 key2
返回給定所有集合的差集
redistext:0>sinter key1 key2
返回交集數據
redistext:0>sismember key1 a
判斷該成員是不是集合中的成員 是返回1
redistext:0>smembers key1
返回該集合中的所有成員
redistext:0>spop key1
移除並返回集合中的隨機元素
redistext:0>srandmember key1
返回集合中一個隨機元素
redistext:0>sunion key1 key2
返回給定集合的並集
SUNIONSTORE destination key1 [key2]
所有給定集合的並集存儲在 destination 集合中
4.5有序集合(sorted set)
Redis 有序集合和集合一樣也是string類型元素的集合,且不允許重複的成員。
不同的是每個元素都會關聯一個double類型的分數。redis正是通過分數來爲集合中的成員進行從小到大的排序。
有序集合的成員是唯一的,但分數(score)卻可以重複。
集合是通過哈希表實現的,所以添加,刪除,查找的複雜度都是O(1)。 集合中最大的成員數爲 232 - 1 (4294967295, 每個集合可存儲40多億個成員)。
命令:
zadd 添加元素
瞭解
5.redis數據備份和恢復
備份數據
Redis中save命令用於創建當前數據庫的備份
語法:redistext:0>save
恢復數據
如果需要恢復數據,只需將備份文件(dump.rdb) 移動到 redis 安裝目錄並啓動服務即可。獲取redis目錄可以使用CONFIG命令
redis 127.0.0.1:6379> CONFIG GET dir
1) "dir"
2) "/usr/local/redis/bin"
5.Redis安全
我們可以通過redis的配置文件設置密碼參數這樣客戶端連接到redis服務就需要密碼驗證這樣就可以使redis服務更加安全
查看是否設置密碼
127.0.0.1:6379> CONFIG get requirepass
1) "requirepass"
2) ""
沒有設置密碼
Redis 密碼runoob
Java示例
import redis.clients.jedis.Jedis;
public class RedisJava {
public static void main(String[] args) {
//連接本地的 Redis 服務
Jedis jedis = new Jedis("localhost");
System.out.println("連接成功");
//查看服務是否運行
System.out.println("服務正在運行: "+jedis.ping());
}
}
import redis.clients.jedis.Jedis;
public class RedisStringJava {
public static void main(String[] args) {
//連接本地的 Redis 服務
Jedis jedis = new Jedis("localhost");
System.out.println("連接成功");
//設置 redis 字符串數據
jedis.set("runoobkey", "www.runoob.com");
// 獲取存儲的數據並輸出
System.out.println("redis 存儲的字符串爲: "+ jedis.get("runoobkey"));
}
}
import java.util.List;
import redis.clients.jedis.Jedis;
public class RedisListJava {
public static void main(String[] args) {
//連接本地的 Redis 服務
Jedis jedis = new Jedis("localhost");
System.out.println("連接成功");
//存儲數據到列表中
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));
}
}
}
import java.util.Iterator;
import java.util.Set;
import redis.clients.jedis.Jedis;
public class RedisKeyJava {
public static void main(String[] args) {
//連接本地的 Redis 服務
Jedis jedis = new Jedis("localhost");
System.out.println("連接成功");
// 獲取數據並輸出
Set<String> keys = jedis.keys("*");
Iterator<String> it=keys.iterator() ;
while(it.hasNext()){
String key = it.next();
System.out.println(key);
}
}
}