1. 程式人生 > >Redis總結--redis的資料型別和簡單操作

Redis總結--redis的資料型別和簡單操作

一、redis的五大資料型別
1、String(字串)
2、Hash(雜湊,類似於java的Map)
3、List(列表)
4、Set(集合)
5、Zset(sorted set 有序集合)
二、常用命令:
(一)key
1、exists key : 判斷某個key是否存在
2、move key db :把當前庫的某個可以移動到db庫 eg:move k1 2
3、expire key 秒鐘 :為給定的可以設定過期時間
4、ttl key : 檢視還有多少秒過期  -1 永不過期,-2表示已過期
5、keys * : 檢視所有key
6、type key :檢視key的型別
7、del key : 刪除 key
8、flushall:清空所有key
9、shutdown : 關閉redis
(二)list:一值多value,字串連結串列,左右都可以插入,如果值全部移除,則可以消除
1、lpush mylist1 1 2 3 4 5 :存入一個list 從左向右先入棧,用lrang 輸出先輸出棧頂(5,4,3,2,1)
2、rpush mylist2 1 2 3 4 5 :存入一個list 從右向左先入賬,用lrang 輸出先輸出棧頂(1,2,3,4,5)
3、lrange mylist1 0 1 :輸出前兩個,0到 -1 為輸出全部,按棧頂的順序
4、lpop mylist1 :從棧頂輸出 5
5、rpop mylist1 :從棧底輸出 1
6、lindex mylist1 1 : 按索引下標獲取元素
7、llen mylist1 : 獲取長度
8、lrem mylist1 2 3 : 刪除n個值  刪除(mylist1中) 2 個 3
9、ltrim mylist 3 5 : 擷取3 5 重新賦值給mylist1
10、rpoplpush mylist1 mylist2 : 將mylist1的棧底給mylist2的棧頂
11、 lset mylist1 0 x : 給mylist1 的下標為0的設定成 x 
12、linsert mylist before/after x java : 在x 的前面或者後面插入java
(三)set:一值多value,重複值會去除重複
1、sadd set01 1 1 2 2 3 3  新增
2、smembers set01 輸出
3、scard set01 個數
4、srem set01 1 刪除集合元素
5、srandmember set01 3 隨機出3個人元素
6、spop set01 隨機出棧
7、smove set01 set02 1 將set01的某個值移植給set02
8、sdiff set01 set02 差集,在第一個set裡面,不在第二個裡面
9、sinter set01 set02 交集
10、sunion set01 set02 並集
(四)hash: k v模式,v 是一個鍵值對
1、hset user id 11 新增(v 是 id 和 11 一對),存在則覆蓋
2、hget user id 取值
3、hmset cusomer id 11 name lisi age 26 
4、hmget cusomer id name lisi
5、hmgetall customer 取全部
6、hdel user name 刪除
7、hlen user 長度
8、hexists user name 是否存在 存在為1 不存在為 0
9、hkeys user  獲取所有key
10、hvals user 獲取所有value
11、hincrby customer age 2 遞增2
12、hincrbyfloat customer age 2.5 遞增小數
13、hsetnx user name 14 將雜湊表 key 中的域 field 的值設定為 value ,當且僅當域 field 不存在。搜尋若域 field 已經存在,該操作無效。
(五)Zset :有序set,在set的基礎上加一個score值,egzset k1 score v1 score v2
1、zadd zset01 60 v1 70 v2 80 v3 90 v4  新增
2、zrange zset 0 -1 不帶值輸出
3、zrange zset 0 -1 withscores 帶值輸出
4、zrangebyscore zset01 30 (50 輸出30 到50的,(  代表不包含 limit 返回數量限制
5、zrem zset01 v5 刪除
6、zcard zset01 統計個數
7、zcount zset01 60(60 80) 統計分數個數
8、zrank zset01 v2 獲取下標
9、zscore zset01 v2 獲取分數
10、zrevrank zset01  v2 逆序獲取下標的值
11、zrevdange zset01 0 -1 逆序輸出
12、zrevrangebyscore set01 60 90 按逆序分數範圍輸出 90 到 60
 

三、java呼叫redis

1、依賴:

<dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>2.9.0</version>
    </dependency>

2、利用Jedis呼叫

public class RedisAPI {

	public static void main(String[] args) {
		Jedis jedis = new Jedis("IP",6379);
		/*jedis.set("k1", "1");
		System.out.println(jedis.get("k1"));
		Set keys = jedis.keys("*");
		System.out.println(keys.size());*/
		
		//list
		List<String> l1 = new ArrayList<String>();
		l1.add("list1");
		l1.add("list2");
		l1.add("list3");
		for (String str : l1) {
			jedis.lpush("list1", str);
		}
		jedis.lpop("list1");
		List<String> lrange = jedis.lrange("list1", 0, -1);
		System.out.println(lrange.size());
		jedis.del("list1");
		
		//set
		List<String> l2 = new ArrayList<String>();
		l2.add("list1");
		l2.add("list2");
		l2.add("list3");
		l2.add("list2");
		for (String str : l2) {
			jedis.sadd("set1", str);
		}
		
		Set<String> smembers = jedis.smembers("set1");
		for (String string : smembers) {
			System.out.println(string);
		}
		System.out.println(jedis.scard("set1"));
		jedis.del("set1");
		
		//map
		jedis.hsetnx("map1", "name", "張三");
		jedis.hset("map1", "password", "123456");
		System.out.println(jedis.hget("map1", "name"));
		System.out.println(jedis.hlen("map1"));
		jedis.hdel("map1", "name");
		jedis.hdel("map1", "password");
		
		//zset
		jedis.zadd("zset", 100, "zset2");
		jedis.zadd("zset", 60, "set1");
		Set<String> set = jedis.zrange("zset", 0, -1);
		for (String string : set) {
			System.out.println(string);
		}
		jedis.del("zset");
	}

}