一、Redis mac可視化工具
二、redis常見指令學習
1.Reids list 學習 2.Reids hash 學習 3.Reids 字元串 4.Reids Set類型 5.Reids Sorted-set類型
三、java連接配接操作
一、Redis mac可視化工具
推薦一款mac上的redis的可視化工具redis-desktop-manager
下載下傳位址:連結:https://pan.baidu.com/s/1LrK4HCY2ndzwfSP15jiEiw 密碼:9i3i
二、redis常見指令學習
Redis的資料類型
字元串清單(list)、哈希(hash)、字元串(String)、字元串集合(set)、有序字元集合(sorted set)
1.redis list 學習
//左端插入資料
127.0.0.1:6379> lpush mylist abc
(integer) 1
//右端插入資料
127.0.0.1:6379> rpush mylist2 123
(integer) 1
//查詢資料 注意這裡的-1指的是末尾的第一個元素
127.0.0.1:6379> lrange mylist 0 -1
1) "abc"
//彈出該元素 注意彈出後則沒有該元素
127.0.0.1:6379> lpop mylist //還有右端彈出rpop mylist
"abc"
127.0.0.1:6379> lrange mylist 0 -1
(empty list or set)
//檢視長度
127.0.0.1:6379> lpush mylist a b c
(integer) 3
127.0.0.1:6379> llen mylist
(integer) 3
//删除元素
//lrem mylist 2 c //從頭到位删除兩個c
//lrem mylist -2 c //從尾到頭删除兩個c
127.0.0.1:6379> lrange mylist 0 -1
1) "c"
2) "c"
3) "c"
4) "c"
5) "b"
6) "a"
127.0.0.1:6379> lrem mylist 2 c //從頭到位删除兩個c
(integer) 2
127.0.0.1:6379> lrange mylist 0 -1
1) "c"
2) "c"
3) "b"
4) "a"
//設定值
//指定某個位置添加元素
127.0.0.1:6379> lset mylist 3 mmm
OK
127.0.0.1:6379> lrange mylist 0 -1
1) "c"
2) "c"
3) "b"
4) "mmm"
//插入值
//linsert mylist before b 11 在第一個b之前插入11
//linsert mylist after b 11 在第一個b之後插入11
127.0.0.1:6379> lrange mylist 0 -1
1) "c"
2) "c"
3) "b"
4) "mmm"
127.0.0.1:6379> linsert mylist before b 11
(integer) 5
127.0.0.1:6379> lrange mylist 0 -1
1) "c"
2) "c"
3) "11"
4) "b"
5) "mmm"
//lpushx mylist x
//将值 value 插入到清單 key 的表頭,當且僅當 key 存在并且是一個清單。
//當 key 不存在時, lpushx指令什麼也不做
2.redis hash 學習
每一個hash可以存儲4294967295個鍵值對。
//指派
//hset key field value
127.0.0.1:6379> hset myhash username xiangzaixiansheng
(integer) 0
127.0.0.1:6379> hset myhash age 18
(integer) 0
//多個指派
//hmset key field value [field value ...]
127.0.0.1:6379> hmset myhash2 username malatang age 21
OK
//取值
127.0.0.1:6379> hget myhash username
"xiangzaixiansheng"
//全部取出
127.0.0.1:6379> hgetall myhash
"xiangzaixiansheng"
//多個取值
127.0.0.1:6379> hmget myhash username age
1) "xiangzaixiansheng"
2) "18"
//删除 或者使用 del myhash2
127.0.0.1:6379> hdel myhash2 username age
(integer) 2
//增加(增加某個數值的大小)
127.0.0.1:6379> hincrby myhash age 5
(integer) 23
//判斷存在,如果存在則傳回1
127.0.0.1:6379> hexists myhash username
(integer) 1
//擷取所有屬性值
127.0.0.1:6379> hkeys myhash
1) "username"
2) "age"
127.0.0.1:6379> hvals myhash
1) "xiangzaixiansheng"
2) "23"
3.Reids 字元串
//指派
//set key value [EX seconds] [PX milliseconds] [NX|XX]
127.0.0.1:6379> set company redis
OK
//取值
//get key
127.0.0.1:6379> get company
"redis"
//删除
127.0.0.1:6379> del company
(integer) 1
//更改 先取值後更改數值
127.0.0.1:6379> getset company apple
"redis"
127.0.0.1:6379> get company
"apple"
//數值增加 如果沒有num的話先将num的值為0然後加1.如果不是整形會報錯
127.0.0.1:6379> incr num
(integer) 1
127.0.0.1:6379> get num
"1"
//數值減少
127.0.0.1:6379> decr num
(integer) 0
//指定增加
127.0.0.1:6379> incrby num 5
(integer) 5
//指定減少
127.0.0.1:6379> decrby num 2
(integer) -2
//追加一個字元串
127.0.0.1:6379> get company
"apple"
127.0.0.1:6379> append company xiangzaixiansheng
(integer) 22
127.0.0.1:6379> get company
"applexiangzaixiansheng"
4.Reids Set類型
需要注意的set不可以出現重複元素。并且可以很友善的對集合進行聚合操作。
主要使用場景:帶有唯一性的場景.
//添加
127.0.0.1:6379> sadd myset a b c
(integer) 3
//删除
127.0.0.1:6379> srem myset a
(integer) 1
127.0.0.1:6379> smembers myset
1) "c"
2) "b"
//檢視資料
127.0.0.1:6379> smembers myset
1) "c"
2) "b"
3) "a"
//判斷是否有某個元素 sismember key member
//判斷c 在不在myset中
127.0.0.1:6379> sismember myset c
(integer) 1
//差集運算(與key的順序有關) sdiff key [key ...]
127.0.0.1:6379> smembers myset
1) "c"
2) "b"
127.0.0.1:6379> smembers myset2
1) "12"
2) "c"
127.0.0.1:6379> sdiff myset myset2
1) "b"
//交集運算 sinter key [key ...]
127.0.0.1:6379> smembers myset
1) "c"
2) "b"
127.0.0.1:6379> smembers myset2
1) "12"
2) "c"
127.0.0.1:6379> sinter myset myset2
1) "c"
//并集運算 sunion key [key ...]
127.0.0.1:6379> smembers myset
1) "c"
2) "b"
127.0.0.1:6379> smembers myset2
1) "12"
2) "c"
127.0.0.1:6379> sunion myset myset2
1) "12"
2) "c"
3) "b"
//擷取成員數量
127.0.0.1:6379> scard myset
(integer) 2
//随機傳回集合中的成員
127.0.0.1:6379> srandmember myset
"b"
127.0.0.1:6379> srandmember myset
"c"
//兩個集合相差的,存到另一個集合 注意:是把myset和myset1相差的元素存到mmset
127.0.0.1:6379> sdiffstore mmset myset myset1
(integer) 2
127.0.0.1:6379> smembers mmset
1) "c"
2) "b"
//兩個集合的交集存在另一個集合
127.0.0.1:6379> sinterstore mmmset myset myset1
(integer) 0
//兩個元素的并集存到另一個集合
127.0.0.1:6379> sunionstore my3 myset myset1
(integer) 2
127.0.0.1:6379> smembers my3
1) "c"
2) "b"
5.Reids Sorted-set類型
Sorted-set中的成員在集合中的位置是有序的。
應用場景:遊戲排行榜、積分排行榜、建構索引資料等
//添加元素 zadd key [NX|XX] [CH] [INCR] score member [score member ...]
//我們向mysort中插入三組資料
127.0.0.1:6379> zadd mysort 70 lm 80 wh 90 xiangzai
(integer) 3
//擷取元素 zscore key member
127.0.0.1:6379> zscore mysort xiangzai
"90"
//擷取集合中的資料數量
127.0.0.1:6379> zcard mysort
(integer) 3
//查找範圍
//查找從頭到尾
127.0.0.1:6379> zrange mysort 0 -1
1) "lm"
2) "wh"
3) "xiangzai"
//加上關鍵字withscores把分數也列印出來
127.0.0.1:6379> zrange mysort 0 -1 withscores
1) "lm"
2) "70"
3) "wh"
4) "80"
5) "xiangzai"
6) "90"
//從大到小 進行範圍掃描
127.0.0.1:6379> zrevrange mysort 0 -1 withscores
1) "xiangzai"
2) "90"
3) "wh"
4) "80"
5) "lm"
6) "70"
//删除元素
//删除lm
127.0.0.1:6379> zrem mysort lm
(integer) 1
127.0.0.1:6379> zrevrange mysort 0 -1 withscores
1) "xiangzai"
2) "90"
3) "wh"
4) "80"
//按範圍删除 zremrangebyrank key start stop
127.0.0.1:6379> zremrangebyrank mysort 0 4
(integer) 2
//按分數删除 删除80到100之間
127.0.0.1:6379> zadd mysort 70 lm 80 wh 90 xiangzai
(integer) 0
127.0.0.1:6379> zremrangebyscore mysort 80 100
(integer) 2
127.0.0.1:6379> zrange mysort 0 -1 withscores
1) "lm"
2) "70"
//從小到大顯示 (指定範圍,隻顯示2個)
127.0.0.1:6379> zadd mysort 70 lm 80 wh 90 xiangzai
(integer) 2
127.0.0.1:6379> zrangebyscore mysort 0 100 withscores limit 0 2
1) "lm"
2) "70"
3) "wh"
4) "80"
//給指定元素增加 zincrby key increment member
127.0.0.1:6379> zrange mysort 0 -1 withscores
1) "lm"
2) "70"
3) "wh"
4) "80"
5) "xiangzai"
6) "90"
127.0.0.1:6379> zincrby mysort 5 xiangzai
"95"
127.0.0.1:6379> zrange mysort 0 -1 withscores
1) "lm"
2) "70"
3) "wh"
4) "80"
5) "xiangzai"
6) "95"
//檢視80-90分之間的個數
127.0.0.1:6379> zcount mysort 80 90
(integer) 1
三、java連接配接操作
1.使用Jedis直接連接配接方法
public class TestJedis {
public static void main(String[] args) {
// TODO Auto-generated method stub
Jedis jedis = new Jedis("127.0.0.1",6379);
// jedis.auth("1234");
//連接配接
jedis.connect();
//列出符合特定條件的key 其中pattern為比對條件,填*則為列出所有
Set<String> keyList = jedis.keys("*");
//foreach,将keyList的值,指派于key,并列印,之後,下個keyList值,指派于key并列印,以此類推,到最後,列印完,自動出"for(){}"往下運作
for(String key : keyList) {
System.out.println(key);
}
//關閉連接配接
jedis.disconnect();
}
}
列印出來的值
2.JedisPool連接配接
public void testJedisPool() {
/**
* Jedis連接配接池管理方式連接配接Redis步驟:
1、導入包(jedis-3.1.0.jar和commons-pool2-2.6.2.jar)
2、獲得連接配接池配置對象JedisPoolConfig
3、設定連接配接池資訊(最大連接配接數、最大空閑連接配接數、最小空閑連接配接數等)
4、獲得連接配接池(new JedisPool(GenericObjectPoolConfig poolConfig,String host,int port))
5、獲得核心對象Jedis
6、用Jedis操作Redis資料并取得結果
7、關閉Jedis連接配接,關閉JedisPool連接配接池,釋放資源
*/
//建立連接配接池配置對象
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(25);//設定最大連接配接數
config.setMaxIdle(20);
config.setMinIdle(5);
JedisPool pool = new JedisPool(config, "127.0.0.1", 6379);
//擷取核心對象
Jedis jedis = pool.getResource();
//驗證redis密碼,如果沒有設定密碼這段可以省略
//jedis.auth("1234");//登入
jedis.select(0);//選擇DB0資料庫
Set<String> keyList = jedis.keys("*");
//周遊map元素
for(String key : keyList){
//jedis.type(String key)傳回給定key所儲存的值的類型。 none(key不存在),string(字元串),list(清單),set(集合),zset(有序集),hash(哈希表)
System.out.println("key=="+key+",type="+jedis.type(key));
//取出map元素
if(jedis.type(key).equals("hash")) {
System.out.println("Hashvalue=" + jedis.hgetAll(key));
//取出全部
Map<String,String> map = jedis.hgetAll(key);
Set<String> set = map.keySet();
Iterator<String> iterator = set.iterator();
while(iterator.hasNext()){
String field = iterator.next();
System.out.println(field+"===="+map.get(field));
}
}
}else if(jedis.type(key).equals("list")) {
//查詢元素
System.out.println("List value = " + jedis.lrange(key, 0, -1));
//查詢目前list的長度
System.out.println("List的length函數===" + jedis.llen(key));
//周遊元素
List<String> list = jedis.lrange(key, 0, jedis.llen(key) - 1);
for(String keys:list){
System.out.println("List value = " + keys);
}
}else if(jedis.type(key).equals("set")) {
System.out.println("Set value= " + jedis.smembers(key));
Set<String> set = jedis.smembers(key);
for(String sets : set) {
System.out.println("Set value =" + sets);
}else if(jedis.type(key).equals("zset")) {
Set<Tuple> setsSet = jedis.zrangeWithScores(key, 0, jedis.zcard(key) - 1);
System.out.println("Set value =" + setsSet);
}
}
jedis.close();
pool.close();
}