好程式設計師Java學習路線分享Redis快速入門
好程式設計師Java 學習路線分享 Redis 快速入門,Redis 的啟動
1. 基於 docker 啟動
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
2. 使用原生 tar 包啟動
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 桌面版客戶端工具的使用
三、Redis 的配置檔案
redis.conf
在啟動redis 伺服器時,可以透過配置檔案裡面的引數的設定,來設定伺服器,如果啟動 redis 伺服器,不帶配置檔案,那麼引數都是預設值。
1. 解除本機繫結
# bind 127.0.0.1 註釋掉
2.redis 資料庫預設擁有 16 個庫,資料會被存放在這 16 個庫中的某一個。
3. 設定密碼
在連線時需要輸入密碼
四、Java 的 Redis 客戶端: Jedis
redis 自帶的客戶端: redis-cli
1. 引入依賴
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency>
2. 使用 Jedis 工具類
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); } }
五、Redis 的五大資料型別
1. String 型別
1 )增刪改查
set key value 新增 / 修改 鍵值對
get key ==> value 根據鍵得到值
del key1 [key2...] 根據鍵刪除鍵值對,返回值刪除的個數
mset k1 v1 k2 v2 [key value ...] 一次性插入多個值
mget k1 k2 一次性拿多個值
2) 其他命令
incr 對整數進行自增,浮點數也不行 : set k1 1000 incr k1
decr 對整數進行遞減
incrby 鍵 步長 一次增長指定步長的值
decrby 鍵 步長 一次減少指定步長的值
2. hash 型別
資料型別的特點:
鍵 - 值: 鍵值對
而且 鍵裡可以存放多個鍵值對
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 型別的應用場景: 存物件時更方便
3. 列表型別 List
列表可以實現棧和佇列的效果
lpop 從左邊出列隊
rpush 和 rpop
模擬棧的效果:
模擬佇列的效果: 先進先出
其他命令:
LLEN key ,查詢列表的長度
LINDEX key index ,獲取指定索引的值 get(int index)
LSET key index value ,設定指定索引的值
Ltrim key start end 保留指定索引範圍的值
4.Set 型別
Sadd key element [element] 新增元素
Scard key 計算元素個數
Smembers key 獲取所有的元素
Srem key element [element] 刪除元素
Sismember key element 判斷元素是否在集合中,存在返回 1 ,否則返回 0
Spop key 從集合隨機彈出元素
5.zset 型別
是一個有序的集合
常用命令:
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); }
六、使用Jedis 連線池
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");
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2657664/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師Java學習路線分享SpringCloud程式設計師JavaSpringGCCloud
- 好程式設計師分享Python從入門到精通最佳學習路線程式設計師Python
- 好程式設計師Java培訓分享如何快速入門Java程式設計程式設計師Java
- 好程式設計師Java培訓分享如何快速入門Java程式設計師Java
- 好程式設計師Java學習路線分享mybatis對映程式設計師JavaMyBatis
- 好程式設計師Java學習路線分享JVM類載入機制程式設計師JavaJVM
- 好程式設計師Java學習路線分享Java框架怎麼搭建程式設計師Java框架
- 好程式設計師Java學習路線分享Java-String常用方法程式設計師Java
- 好程式設計師Java學習路線分享原生Ajax的使用程式設計師Java
- 好程式設計師Java學習路線分享finalize()方法詳解程式設計師Java
- 好程式設計師Java學習路線分享JVM相關概念程式設計師JavaJVM
- 好程式設計師Java學習路線分享MyBatis之Spring整合程式設計師JavaMyBatisSpring
- 好程式設計師Java學習路線分享MyBatis之基本使用程式設計師JavaMyBatis
- 好程式設計師Java學習路線分享maven是什麼程式設計師JavaMaven
- 好程式設計師Java學習路線分享SpringMVC之MVC概述程式設計師JavaSpringMVC
- 好程式設計師大資料培訓分享Hadoop入門學習線路圖程式設計師大資料Hadoop
- 好程式設計師Java學習路線分享Java面試題之載入機制程式設計師Java面試題
- 好程式設計師Java學習路線分享Java中的位移運算程式設計師Java
- 好程式設計師Java學習路線分享三大特性之多型程式設計師Java多型
- 好程式設計師Java學習路線分享Dubbo架構介紹程式設計師Java架構
- 好程式設計師Java學習路線分享多執行緒概念程式設計師Java執行緒
- 好程式設計師Java學習路線分享MySQL目錄結構程式設計師JavaMySql
- 好程式設計師Java學習路線之集程式設計師Java
- 好程式設計師Java學習路線JSP物件程式設計師JavaJS物件
- 好程式設計師Python學習路線之python爬蟲入門程式設計師Python爬蟲
- 好程式設計師Java學習路線分享Java弱引用的理解與使用程式設計師Java
- 好程式設計師Java學習路線分享Java案例-封裝JDBC工具類程式設計師Java封裝JDBC
- 好程式設計師Java學習路線分享怎麼理解Java物件導向程式設計師Java物件
- 好程式設計師Java培訓分享零基礎快速入門Java程式設計師Java
- 好程式設計師Python學習路線分享實現快速排序演算法程式設計師Python排序演算法
- 好程式設計師Java學習路線分享SpringMVC之請求和響應程式設計師JavaSpringMVC
- 好程式設計師Java學習路線分享如何處理中文引數程式設計師Java
- 好程式設計師Java學習路線分享MyBatis之關聯查詢程式設計師JavaMyBatis
- 好程式設計師Java學習路線分享Spring常見面試題程式設計師JavaSpring面試題
- 好程式設計師大資料學習路線分享MAPREDUCE程式設計師大資料
- 好程式設計師大資料學習路線分享SparkSQl程式設計師大資料SparkSQL
- 好程式設計師Java學習路線分享5分鐘瞭解計數排序程式設計師Java排序
- 好程式設計師大資料學習路線分享Hbase指令學習程式設計師大資料