Java面試系列09:Redis基礎

1.什麼是Redis

Redis是用C語言開發的一個開源的高性能鍵值對(key-value)數據庫,
官方提供測試數據,50個併發執行100000個請求,讀的速度是110000次/s,寫的速度是81000次/s ,
且Redis通過提供多種鍵值數據類型來適應不同場景下的存儲需求。

2.redis的應用場景

緩存(數據查詢、短連接、新聞內容、商品內容等等)
聊天室的在線好友列表
任務隊列。(秒殺、搶購、12306等等)
應用排行榜
網站訪問統計
數據過期處理(可以精確到毫秒
分佈式集羣架構中的session分離

3.redis的數據結構:

存儲

set username zhangsan    
hset myhash username lisi
lpush myList a;rpush myList c
sadd myset a
zadd mysort 60 zhangsan

獲取

get username
hget myhash username;hgetall myhash
lrange myList 0 -1
smembers myset
zrange mysort 0 -1;zrange mysort 0 -1 withscores

刪除

del username
hdel myhash username
lpop key;rpop key
srem myset a
zrem mysort lisi

redis存儲的是:key,value格式的數據,其中key都是字符串value有5種不同的數據結構:
value的數據結構:
1) 字符串類型 string

		存儲: set key value
			set username zhangsan
		獲取: get key
			get username
		刪除: del key
			del username

2) 哈希類型 hash : map格式

		存儲: hset key field value
			hset myhash username lisi
			hset myhash password 123
		獲取: 
			獲取指定的field對應的值:hget key field
			hget myhash username
			獲取所有的field和value:hgetall key
			hgetall myhash
		刪除: hdel key field
			hdel myhash username

3) 列表類型 list : linkedlist格式。支持重複元素
可以添加一個元素到列表的頭部(左邊)或者尾部(右邊)

		添加:
			將元素加入列表左表:lpush key value
				lpush myList a
			將元素加入列表右邊:rpush key value
				rpush myList c
		獲取:
			範圍獲取:lrange key start end
				lrange myList 0 -1
		刪除:
			lpop key: 刪除列表最左邊的元素,並將元素返回
			rpop key: 刪除列表最右邊的元素,並將元素返回

4) 集合類型 set : 不允許重複元素

		存儲:sadd key value
			sadd myset a
		獲取:smembers key:獲取set集合中所有元素
			smembers myset
		刪除:srem key value:刪除set集合中的某個元素
			srem myset a

5) 有序集合類型 sortedset:
不允許重複元素,且元素有順序
每個元素都會關聯一個double類型的分數。
redis正是通過分數來爲集合中的成員進行從小到大的排序。

		存儲:zadd key score value
			zadd mysort 60 zhangsan
		獲取:zrange key start end [withscores]
			zrange mysort 0 -1
			zrange mysort 0 -1 withscores
		刪除:zrem key value
			zrem mysort lisi

4. 通用命令

	1. keys * : 查詢所有的鍵
	2. type key : 獲取鍵對應的value的類型
	3. del key:刪除指定的key value

5.Jedis

字符串類型 string

		//存儲
       	jedis.set("username","zhangsan");
        //獲取
        String username = jedis.get("username");
		//可以使用setex()方法存儲可以指定過期時間的 key value
		//將activecode:hehe鍵值對存入redis,並且20秒後自動刪除該鍵值對
        jedis.setex("activecode",20,"hehe");

哈希類型 hash : map格式

	 // 存儲hash
     jedis.hset("user","name","lisi");
     jedis.hset("user","age","23");
	 // 獲取hash
     String name = jedis.hget("user", "name");
	 // 獲取hash的所有map中的數據
     Map<String, String> user = jedis.hgetAll("user");

列表類型 list : linkedlist格式。支持重複元素

	// list 存儲
    jedis.lpush("mylist","a","b","c");//從左邊存
    jedis.rpush("mylist","a","b","c");//從右邊存
	// list 範圍獲取
    List<String> mylist = jedis.lrange("mylist", 0, -1);//是ArrayList
	// list 彈出
	String element1 = jedis.lpop("mylist");
	String element2 = jedis.rpop("mylist");

集合類型 set : 不允許重複元素

	 // set 存儲
     jedis.sadd("myset","java","php","c++");
	 Set<String> myset = jedis.smembers("myset");

有序集合類型 sortedset:不允許重複元素,且元素有順序

	 // sortedset 存儲
     jedis.zadd("mysortedset",3,"亞瑟");
     jedis.zadd("mysortedset",30,"後裔");
     jedis.zadd("mysortedset",55,"孫悟空");
	 // sortedset 獲取
     Set<String> mysortedset = jedis.zrange("mysortedset", 0, -1);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章