系列文章
java Redis實戰
很多人,可能看過Redis相關的教程,或者書籍,知道了一些關於Redis的基礎知識,但是也只是瞭解了Redis是什麼,但是並沒有在實際的編寫代碼的過程中使用到Redis,現在就跟隨者我的步伐,進入到Redis實戰中吧。
基礎回顧
Redis的數據類型
Redis支持五種數據類型,分別是:String、Hash、List、Set以及Zset
String
是redis中的最基本的數據類,可以理解成和Memcached(一套分佈式的高速緩存系統)一模一樣的類型,一個key對應一個value
是二進制安全的,即可以包含任何數據,比如jpg圖片或者序列化的對象,一個鍵可以最大存儲512MB
set a “b”
get a
Hash
Redis hash是一個鍵名對集合,也是一個string類型的field和value的映射表,hash特別適合用於存儲對象
hmset users:1 userage 18 username zhonghu
hgetall user : 1
List
Redis的列表是簡單的字符串列表,按照插入順序排列,可以添加一個元素到列表的頭部或尾部
Lpush 插入
Lrange 查看
Set
Redis的Set是無序集合,集合是通過哈希表實現的,所以添加、刪除、查找的複雜度都是O(1)
sadd:添加一個String元素到key對應的set集合中,成功返回1已存在返回0 key對應的set不存在返回錯誤
smembers 查看
Zset
Redis的Zset是string類型的有序集合,不允許重複的成員,每個元素都會關聯一個double類型的分數
zset的成員是唯一的,但是分數(score)卻可以重複
在java中使用redis
引入redis驅動包:
或者在maven中直接引入
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
測試服務連接
首先引入jar包:
import redis.clients.jedis.Jedis;
通過ping命脈測試服務狀態
public class RedisTest {
public static void main(String[] args) {
// 連接到笨的的redis服務
Jedis jedis = new Jedis("127.0.0.1");
System.out.println("連接成功");
System.out.println("服務器正在運行"+jedis.ping());
}
}
結果:
存儲數據
import redis.clients.jedis.Jedis;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
public class RedisTest {
public static void main(String[] args) {
// 連接到笨的的redis服務
Jedis jedis = new Jedis("127.0.0.1");
System.out.println("連接成功");
System.out.println("服務器正在運行"+jedis.ping());
// 設置redis 字符串數據
jedis.set("name","zhonghu");
System.out.println("redis 存儲的字符串爲:"+jedis.get("name"));
System.out.println("============================================");
// 設置redis list數據
jedis.lpush("list","redis");
jedis.lpush("list","java");
jedis.lpush("list","zhonghu");
// 獲取存儲的數據並輸出
List<String> list = jedis.lrange("list",0,2);
for(String i:list){
System.out.println(i);
}
System.out.println("============================================");
// 設置redis set數據
jedis.sadd("set","hello");
jedis.sadd("set","world");
jedis.sadd("set","zhonghu");
// 獲取數據並輸出
Set<String> keys=jedis.smembers("set");
// 定義迭代器輸出
Iterator<String> it = keys.iterator();
while (it.hasNext()){
System.out.println(it.next());
}
}
}
結果
it = keys.iterator();
while (it.hasNext()){
System.out.println(it.next());
}
}
}
結果
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2lzemhvbmdodS9QaWN0dXJlLWJlZC9tYXN0ZXIvaW1nLzIwMjAwNTEyMTY0NjAxLnBuZw?x-oss-process=image/format,png)