javaredis
1. 如何在java中使用redis
publicclassRedisListJava{
publicstaticvoidmain(String[]args){
//連接本地的Redis服務
Jedisjedis=newJedis("localhost");
System.out.println("Connectiontoserversucessfully");
//存儲數據到列表中
jedis.lpush("tutorial-list","Redis");
jedis.lpush("tutorial-list","Mongodb");
jedis.lpush("tutorial-list","Mysql");
//獲取存儲的數據並輸出
List<String>list=jedis.lrange("tutorial-list",0,5);
for(inti=0;i<list.size();i++){
System.out.println("Storedstringinredis::"+list.get(i));
}
}
}
2. 怎麼在java中傳redis命令
第一步,在windows安裝配置好redis資料庫。這里我就不再概述了。jedis-2.4.2.jar,當然最好是最新版本的jar包。這個在下就出來的。後,放在一個文件夾下面,一會會需要到。
第二步。打開eclipse,新建一個java工程。如下圖所示:
第三步:在Test這個java工程裡面,我們新建一個folder,命名lib,把剛才的jedis-2.4.2.jar包放在我們新建的lib的包下面,如下圖所示:
第四步,在eclipse中,選中jar包,build path下。然後我們再Test這個項目裡面我們新建一個class,class名字為TestConnect。
第五步,在類裡面,我們輸入如下的內容:
// Connecting to Redis server on localhost
//實例化一個客戶端
Jedis jedis = new Jedis("localhost");
//=================================================
// check whether server is running or not
//ping下,看看是否通的
System.out.println("Server is running: " + jedis.ping());
//保存一個
jedis.set("leiTest", "localhost Connection ?sucessfully");
//獲取一個
System.out.println("通過key獲取value: ? ?" + jedis.get("leiTest"));
第六步,對剛才的類進行運行,ctrl+f11快捷鍵運行下,如下圖所示:
第七步,進一步驗證我們是否在redis上是否保存了數據,並且能夠取出來,我們到redis安裝包的目錄,如下圖,打開紅色框內的 redis-cli.exe,打開後,我們進入下面的第二個圖片的界面。
第八步:我們在redis的客戶端的界面 輸入 ?get leiTest ?這個指令。leiTest是剛才在eclipse中我們存入redis資料庫中的一個String類型的鍵。如下圖,證明我們確實成功了,你也試試吧。
3. Java操作redis的jedis的范圍查詢是怎麼寫的
Java操作redis的jedis的范圍查詢是怎麼寫的? 我要從一個范圍到另一個范圍的區間
我試過了,
List<String> userList = jedis.lrange("userList", 0, -1);
Set<String> user = jedis.zrange("user", 0, -1);
這兩個范圍查詢的得到結果,為何都是 0
但是我用 Set<String> str =jedis.keys("tes2:*");
發現是用完整的數據的,我一次性讀取這么多數據,redis直接socket失敗了
4. 如何用java獲取redis的info
預備
jedis-2.5.2
commons-pool2-2.2.jar
使用單連接
此方式僅建議用於開發環境做調試用。
// 創建連接
String host = "192.168.56.102";
int port = 6379;
Jedis client = new Jedis(host, port);
// 執行set指令
String result = client.set("key-string", "Hello, Redis!");
System.out.println( String.format("set指令執行結果:%s", result) );
// 執行get指令
String value = client.get("key-string");
System.out.println( String.format("get指令執行結果:%s", value) );
運行上述代碼,控制台輸出:
set指令執行結果:OK
get指令執行結果:Hello, Redis!
使用連接池
此方式適用於僅使用單個Redis實例的場景。
// 生成連接池配置信息
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxIdle(10);
config.setMaxTotal(30);
config.setMaxWaitMillis(3*1000);
// 在應用初始化的時候生成連接池
JedisPool pool = new JedisPool(config, "192.168.56.102", 6379);
// 在業務操作時,從連接池獲取連接
Jedis client = pool.getResource();
try {
// 執行指令
String result = client.set("key-string", "Hello, Redis!");
System.out.println( String.format("set指令執行結果:%s", result) );
String value = client.get("key-string");
System.out.println( String.format("get指令執行結果:%s", value) );
} catch (Exception e) {
// TODO: handle exception
} finally {
// 業務操作完成,將連接返回給連接池
if (null != client) {
pool.returnResource(client);
}
} // end of try block
// 應用關閉時,釋放連接池資源
pool.destroy();
運行上述代碼,控制台輸出:
set指令執行結果:OK
get指令執行結果:Hello, Redis!
使用連接池+分布式
在規模較大的系統中,往往會有多個Redis實例做負載均衡。並且還實現主從備份,當主實例發生故障時,切換至從實例提供服務。
類似於Memcached的客戶端,Jedis也提供了客戶端分布式操作的方式,採用一致性哈希演算法。
// 生成多機連接信息列表
List<JedisShardInfo> shards = new ArrayList<JedisShardInfo>();
shards.add( new JedisShardInfo("127.0.0.1", 6379) );
shards.add( new JedisShardInfo("192.168.56.102", 6379) );
// 生成連接池配置信息
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxIdle(10);
config.setMaxTotal(30);
config.setMaxWaitMillis(3*1000);
// 在應用初始化的時候生成連接池
ShardedJedisPool pool = new ShardedJedisPool(config, shards);
// 在業務操作時,從連接池獲取連接
ShardedJedis client = pool.getResource();
try {
// 執行指令
String result = client.set("key-string", "Hello, Redis!");
System.out.println( String.format("set指令執行結果:%s", result) );
String value = client.get("key-string");
System.out.println( String.format("get指令執行結果:%s", value) );
} catch (Exception e) {
// TODO: handle exception
} finally {
// 業務操作完成,將連接返回給連接池
if (null != client) {
pool.returnResource(client);
}
} // end of try block
// 應用關閉時,釋放連接池資源
pool.destroy();
運行上述代碼,控制台輸出:
set指令執行結果:OK
get指令執行結果:Hello, Redis!
5. redis java 有什麼用
Java連接redis的使用示例
Redis是開源的key-value存儲工具,redis通常用來存儲結構化的數據,因為redis的key可以包含String、hash、listset和sorted list。
Redisclient支持多種語言,包括:c、C++、C#、php、java、python、go等語言,根據自己的開發語言,選擇合適的redis client版本類型即可。我是使用java語言開發的,針對java語言,redis client也提供了多種客戶端支持,按照推薦類型依次是:Jedis、Redisson、JRedis、JDBC-Redis、RJC、redis-protocol、aredis、lettuce。前兩種類型是比較推薦的,我們採用了Redisson類型版本作為redisclient的使用。
Redisson版的redis可發工程搭建
1. 新建maven工程
2. 在pom.xml文件的dependencies節點下增加如下內容:
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.7</version>
</dependency>
3. 保存pom.xml後,等eclispe工程構建完成後即可進行開發了
開發示例
下面是演示連接redis伺服器、保存讀取concurrentMap對象、保存讀取set對象和保存讀取Queue對象的示例代碼,代碼比較簡單,這里就不再詳細講解了,代碼如下:
[java] view plain
package com.my.test.redis;
import java.util.Queue;
import java.util.Set;
import java.util.concurrent.ConcurrentMap;
import org.redisson.Config;
import org.redisson.Redisson;
public class RedisExample {
/**
* @param args
*/
public static void main(String[] args) {
// 1.初始化
Config config = new Config();
config.setConnectionPoolSize(10);
config.addAddress("127.0.0.1:6379");
Redisson redisson = Redisson.create(config);
System.out.println("reids連接成功...");
// 2.測試concurrentMap,put方法的時候就會同步到redis中
ConcurrentMap<String, Object> map = redisson.getMap("FirstMap");
map.put("wuguowei", "男");
map.put("zhangsan", "nan");
map.put("lisi", "女");
ConcurrentMap resultMap = redisson.getMap("FirstMap");
System.out.println("resultMap==" + resultMap.keySet());
// 2.測試Set集合
Set mySet = redisson.getSet("MySet");
mySet.add("wuguowei");
mySet.add("lisi");
Set resultSet = redisson.getSet("MySet");
System.out.println("resultSet===" + resultSet.size());
//3.測試Queue隊列
Queue myQueue = redisson.getQueue("FirstQueue");
myQueue.add("wuguowei");
myQueue.add("lili");
myQueue.add("zhangsan");
myQueue.peek();
myQueue.poll();
Queue resultQueue=redisson.getQueue("FirstQueue");
System.out.println("resultQueue==="+resultQueue);
// 關閉連接
redisson.shutdown();
}
}
6. java 中redis 如何使用
這是我之前寫的代代碼,可以參考一下:
importjava.util.Set;
importcom.google.gson.Gson;
importredis.clients.jedis.Jedis;
importredis.clients.jedis.JedisPool;
importredis.clients.jedis.JedisPoolConfig;
publicclassApp{
publicstaticvoidmain(String[]args){
JedisPoolConfigconfig=newJedisPoolConfig();
config.setMaxIdle(5);
config.setMaxWaitMillis(10000);
config.setTestOnBorrow(false);
JedisPooljedisPool=newJedisPool(config,"127.0.0.1",6379);
Jedisjedis=jedisPool.getResource();
jedis.flushDB();
jedis.set("name","Tom");
Useruser=newUser(1,"Tom","User");
Gsongson=newGson();
Stringjson=gson.toJson(user);
jedis.set("user1",json);
Set<String>keys=jedis.keys("*");
for(Stringkey:keys){
System.out.println(key);
}
}
}
如果有疑問,可以隨時追問。
7. redis在實際開發中,使用Java哪個框架
1、存儲簡單數據
try {
Jedis jedis = new Jedis();
jedis.set("name", "JackGSmith");
} catch (Exception e) {
//如果緩存連不上,則不處理
System.out.println("登錄無法更新該用戶緩存");
}
從redis緩存中獲取key為「name」的值,使用jedis.get("name"),用一個String變數接收即可。
2、存儲對象、集合
存對象集合用序列化的方式存儲,用反序列化的方式取值。存儲的key和value都是轉化成位元組碼的形式。
先定義一個抽象類:SerializeTranscoder.java,代碼如下:
package cn.com.taiji.sample.utils;
import java.io.Closeable;
import java.io.IOException;
public abstract class SerializeTranscoder {
public abstract byte[] serialize(Object value);
8. java程序怎麼連接redis
packagecom.my.test.redis;
importjava.util.Queue;
importjava.util.Set;
importjava.util.concurrent.ConcurrentMap;
importorg.redisson.Config;
importorg.redisson.Redisson;
publicclassRedisExample{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//1.初始化
Configconfig=newConfig();
config.setConnectionPoolSize(10);
config.addAddress("127.0.0.1:6379");
Redissonredisson=Redisson.create(config);
System.out.println("reids連接成功...");
//2.測試concurrentMap,put方法的時候就會同步到redis中
ConcurrentMap<String,Object>map=redisson.getMap("FirstMap");
map.put("wuguowei","男");
map.put("zhangsan","nan");
map.put("lisi","女");
ConcurrentMapresultMap=redisson.getMap("FirstMap");
System.out.println("resultMap=="+resultMap.keySet());
//2.測試Set集合
SetmySet=redisson.getSet("MySet");
mySet.add("wuguowei");
mySet.add("lisi");
SetresultSet=redisson.getSet("MySet");
System.out.println("resultSet==="+resultSet.size());
//3.測試Queue隊列
QueuemyQueue=redisson.getQueue("FirstQueue");
myQueue.add("wuguowei");
myQueue.add("lili");
myQueue.add("zhangsan");
myQueue.peek();
myQueue.poll();
QueueresultQueue=redisson.getQueue("FirstQueue");
System.out.println("resultQueue==="+resultQueue);
//關閉連接
redisson.shutdown();
}
}
9. java程序,redis操作,存儲
你可以把組裝好了得map數據轉成json字元串,然後存到redis裡面,從redis取出來之後再轉回來使用
10. 怎麼使用java訪問redis
public class RedisListJava {
public static void main(String[] args) {
//連接本地的 Redis 服務
Jedis jedis = new Jedis("localhost");
System.out.println("Connection to server sucessfully");
//存儲數據到列表中
jedis.lpush("tutorial-list", "Redis");
jedis.lpush("tutorial-list", "Mongodb");
jedis.lpush("tutorial-list", "Mysql");
// 獲取存儲的數據並輸出
List<String> list = jedis.lrange("tutorial-list", 0 ,5);
for(int i=0; i<list.size(); i++) {
System.out.println("Stored string in redis:: "+list.get(i));
}
}
}