您好,登錄后才能下訂單哦!
好程序員Java學習路線分享Redis快速入門,Redis的啟動
1) 不帶配置文件啟動?docker run -p 6379:6379 redis
2) 帶配置文件啟動
docker run -p 6379:6379 -v /usr/local/docker/redis/redis.conf:/usr/local/etc/redis/redis.conf redis redis-server /usr/local/etc/redis/redis.conf
?
3)使用docker容器內的客戶端來操作redis服務器
以交互的方式進入到redis容器,再在/usr/local/bin/使用redis-cli工具連接redis服務器
得輸密碼
auth java1904
?
1)從官方下載tar.gz壓縮包,上傳到linux中
?
2)解壓
tar -zxvf ?...
?
3)下載make ?
???apt-get install make
?
4)下載gcc,因為redis是c寫的,需要gcc工具
apt-get intall gcc
?
5)?進入解壓出來的文件夾內,然后使用make進行編譯
?
6)進入?src,執行./redis-server ?../redis.conf ???開啟服務端
?
7)使用redis內部的客戶端,來連接服務端,對redis服務端進行操作
??src里 ???執行 ??./redis-cli
?
redis.conf
在啟動redis服務器時,可以通過配置文件里面的參數的設置,來設置服務器,如果啟動redis服務器,不帶配置文件,那么參數都是默認值。
# bind ?127.0.0.1?注釋掉
在連接時需要輸入密碼
redis自帶的客戶端:?redis-cli
<dependency> ????<groupId>redis.clients</groupId> ????<artifactId>jedis</artifactId> ????<version>2.9.0</version> </dependency>
public?class?MyRedis?{ ????public?static?void?main(String[]?args)?{ ????????Jedis?jedis?=?new?Jedis("192.168.2.128",6379); ????????jedis.auth("java1904"); ????????jedis.set("兩個月后的目標","12k"); ????????String?target?=?jedis.get("兩個月后的目標"); ????????System.out.println(target); ????} }
set ?key ?value ???添加/修改 ?鍵值對
get ?key ?==> value ??根據鍵得到值
del ?key1 [key2...] ?根據鍵刪除鍵值對,返回值刪除的個數
mset ?k1 v1 ?k2 v2 [key value ...] ???一次性插入多個值
mget ?k1 ?k2 ?????????????一次性拿多個值
?
incr ?????對整數進行自增,浮點數也不行: ??set ?k1 ?1000 ?????????incr k1
decr ???對整數進行遞減
?
incrby ?鍵 ?步長 ???一次增長指定步長的值 ???
decrby ?鍵 ?步長 ??一次減少指定步長的值
數據類型的特點:
鍵?- ?值: ?鍵值對
而且?鍵里可以存放多個鍵值對
?
hset ??k1 ??鍵-值
hget ??k1 ?鍵
?
hmset ?k1 ?鍵-值 ?鍵-值?...
hmget ?k1 ?鍵 ?鍵...
?
hdel ???k1 ??鍵 ?鍵...
?
其他命令:
hlen ?k1
查看k1有幾個鍵值對
?
hexists k1?鍵
查看鍵是否存在于k1中
hgetall k1
獲得K1中的所有的鍵值對
?
注意:?在實際使用時,往往會使用這種命名方式:??通過“:”對鍵名進行分割,以起到語義化的效果。
比如??“user:1001:dreams” ?:?用戶id是1001的這個用戶的所有夢想
?
如果鍵沖突了,那么如果之前的數據類型與現在的數據類型不同,則會報這個異常:
redis.clients.jedis.exceptions.JedisDataException: WRONGTYPE Operation against a key holding the wrong kind of value
?
使用jedis進行操作時,hmset中需要存入map集合
HashMap<String,String>?map?=?new?HashMap<String,?String>(); map.put("d1","10000"); map.put("d2","20000"); jedis.hmset("user:1001:dreams",map);
hash類型的應用場景: 存對象時更方便
列表可以實現棧和隊列的效果
lpop?從左邊出列隊
rpush?和 ?rpop
模擬棧的效果:
?
模擬隊列的效果:?先進先出
?
其他命令:
LLEN key,查詢列表的長度
LINDEX key index,獲取指定索引的值?get(int index)
LSET key index value,設置指定索引的值
Ltrim key start end?保留指定索引范圍的值
Sadd key element [element]?添加元素
Scard key?計算元素個數
Smembers key?獲取所有的元素
Srem key element [element]?刪除元素 ?
Sismember key element?判斷元素是否在集合中,存在返回1,否則返回0
Spop key?從集合隨機彈出元素
是一個有序的集合
?
常用命令:
Zadd key?score?member [score?member ...]?添加成員,并為每個成員設置分數
Zcard key?計算成員的個數
Zscore key member?計算某個成員的分數
Zrank key member?計算某個成員的排名
Zincrby key increment member?增加成員的分數
Zrange key start end withscores?返回指定排名范圍的成員
zrevrange key start end?逆序展示
Zrem key member [member]?刪除成員、
?
jedis的操作
@Test public?void?testZset(){ ????Jedis?jedis?=?new?Jedis("192.168.2.128",6379); ????jedis.auth("java1904"); ????HashMap<String,Double>?map?=?new?HashMap<String,?Double>(); ????map.put("l1",100d); ????map.put("l2",200d); ????//?map是一個HashMap<String,Double>?的map? ????jedis.zadd("order1",map); ????jedis.zincrby("order1",200d,"l1"); ????Set<String>?order1?=?jedis.zrevrange("order1",?0,?-1); ????System.out.println(order1); }
package?com.qf.redis.util; import?redis.clients.jedis.Jedis; import?redis.clients.jedis.JedisPool; import?redis.clients.jedis.JedisPoolConfig; public?class?JedisPoolUtil?{ ????private?static?JedisPool?pool?; ????static{ ????????JedisPoolConfig?config?=?new?JedisPoolConfig(); ????????config.setMaxIdle(100); ????????config.setMaxWaitMillis(2000); ????????config.setMaxTotal(200); ????????String?host?=?"192.168.2.128"; ????????pool?=?new?JedisPool(config,host); ????} ????public?static?Jedis?getJedisFromPool(){ ???????return??pool.getResource(); ????} }
使用連接池:
Jedis jedis = JedisPoolUtil.getJedisFromPool();
jedis.auth("java1904");
?
?
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。