1. 怎麼在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類型的鍵。如下圖,證明我們確實成功了,你也試試吧。
2. JedisConnectionFactory如何獲取Redis
Spring對Redis的支持是通過Spring Data Redis實現的,JedisConnectionFactory為我們提供了Redis的一種Java客戶端Jedis。本文主要為大家介紹使用工廠類獲取Jedis的兩種方式,以及使用過程中存在的問題,希望能為大家提供一些思路。
IntelliJ IDEA
首先我們需要編輯Spring的配置文件application.properties,激逗添加Redis的相關配盯襲置,這些配置在代碼中需要注凱鉛兄入,用來生成JedisConnectionFactory的Bean。
接下來我們寫一個配置類,該配置類上需要添加@Configuration註解,我們在這個類中通過@Value註解注入application.properties配置文件中的部分需要的屬性,其中{}用於接收屬性值,在屬性名冒號後面的值是默認值,若讀取不到該屬性則使用默認值。我們在該類中創建JedisConnectionFactory的Bean,在這個Bean中設置讀取到的屬性值。
接下來我們創建一個RedisServer的類,主要用於獲取Redis以及實現部分Redis操作的方法。在該類中我們可以使用@Autowired註解注入JedisConnectionFactory的Bean。下圖中獲取Redis客戶端Jedis的方法是我們推薦的方法,使用該方法我們既獲取到了Jedis實例又使用的連接池,將Jedis實例交由連接池管理,不用太擔心並發操作導致的Redis不可用的情況。最後再附上Jedis操作存儲和獲取數據的方法。
另外,我們還有再介紹一種並不推薦的寫法,如下圖所示。這種方法每次都創建一個新的Redis連接並且沒有關閉連接,在大量並發操作時會帶來性能上的開銷,由於對連接數沒有限制,可能會耗盡Redis的連接,導致Redis連接報錯。
配置完成後我們來測試一下Jedis是否能正常使用,創建一個RedisController類,在該類中注入JedisServer,使用JedisServer提供的存儲和讀取方法,然後啟動服務。
服務啟動後我們在postman中進行測試,首先調用setRedis請求將數據存入Redis中,然後再調用getRedis請求獲取數據,如下圖所示。
JedisConnectionFactory在Spring Data Redis 2.0後就不再推薦上述這種配置方式了,當我們的spring-boot-starter-parent版本設置為2.x時,我們可以看到代碼中的設置已經被廢棄了。
Spring Data Redis 2.0推薦使用Standalone、Sentinel、RedisCluster這三種模式的環境配置類,以便於更加靈活的適配更多的業務場景,我們一般自己測試Redis通常使用的都是單機版的,那麼以單機版為例,JedisConnectionFactory的配置應寫為如下的方式。
本文只是介紹了一種Redis客戶端的使用方式,還是推薦大家使用spring-boot集成Redis做開發,因為spring-boot開箱即用的特性可以大大減少開發工作量。
3. 如何用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!
4. java web開發緩存方案,ehcache和redis哪個更好
Ehcache
在java項目廣泛的使用。它是一個開源的、設計於提高在數據從RDBMS中取出來的高花費、高延遲採取的一種緩存方案。正因為Ehcache具有健壯性(基於java開發)、被認證(具有apache 2.0 license)、充滿特色(稍後會詳細介紹),所以被用於大型復雜分布式web application的各個節點中。
1. 夠快
Ehcache的發行有一段時長了,經過幾年的努力和不計其數的性能測試,Ehcache終被設計於large, high concurrency systems.
2. 夠簡單
開發者提供的介面非常簡單明了,從Ehcache的搭建到運用運行僅僅需要的是你寶貴的幾分鍾。其實很多開發者都不知道自己用在用Ehcache,Ehcache被廣泛的運用於其他的開源項目
比如:hibernate
3.夠袖珍
關於這點的特性,官方給了一個很可愛的名字small foot print ,一般Ehcache的發布版本不會到2M,V 2.2.3 才 668KB。
4. 夠輕量
核心程序僅僅依賴slf4j這一個包,沒有之一!
5.好擴展
Ehcache提供了對大數據的內存和硬碟的存儲,最近版本允許多實例、保存對象高靈活性、提供LRU、LFU、FIFO淘汰演算法,基礎屬性支持熱配置、支持的插件多
6.監聽器
緩存管理器監聽器 (CacheManagerListener)和 緩存監聽器(CacheEvenListener),做一些統計或數據一致性廣播挺好用的
如何使用?
夠簡單就是Ehcache的一大特色,自然用起來just so easy!
redis
redis是在memcache之後編寫的,大家經常把這兩者做比較,如果說它是個key-value store 的話但是它具有豐富的數據類型,我想暫時把它叫做緩存數據流中心,就像現在物流中心那樣,order、package、store、classification、distribute、end。現在還很流行的LAMP php架構 不知道和 redis+mysql 或者 redis + mongodb的性能比較(聽群里的人說mongodb分片不穩定)。
先說說reidis的特性
1. 支持持久化
redis的本地持久化支持兩種方式:RDB和AOF。RDB 在redis.conf配置文件里配置持久化觸發器,AOF指的是redis沒增加一條記錄都會保存到持久化文件中(保存的是這條記錄的生成命令),如果不是用redis做DB用的話還會不要開AOF ,數據太龐大了,重啟恢復的時候是一個巨大的工程!
2.豐富的數據類型
redis 支持 String 、Lists、sets、sorted sets、hashes 多種數據類型,新浪微博會使用redis做nosql主要也是它具有這些類型,時間排序、職能排序、我的微博、發給我的這些功能List 和 sorted set 的強大操作功能息息相關
3.高性能
這點跟memcache很想像,內存操作的級別是毫秒級的比硬碟操作秒級操作自然高效不少,較少了磁頭尋道、數據讀取、頁面交換這些高開銷的操作!這也是NOSQL冒出來的原因吧,應該是高性能
是基於RDBMS的衍生產品,雖然RDBMS也具有緩存結構,但是始終在app層面不是我們想要的那麼操控的。
4.replication
redis提供主從復制方案,跟mysql一樣增量復制而且復制的實現都很相似,這個復制跟AOF有點類似復制的是新增記錄命令,主庫新增記錄將新增腳本發送給從庫,從庫根據腳本生成記錄,這個過程非常快,就看網路了,一般主從都是在同一個區域網,所以可以說redis的主從近似及時同步,同事它還支持一主多從,動態添加從庫,從庫數量沒有限制。 主從庫搭建,我覺得還是採用網狀模式,如果使用鏈式(master-slave-slave-slave-slave·····)如果第一個slave出現宕機重啟,首先從master 接收 數據恢復腳本,這個是阻塞的,如果主庫數據幾TB的情況恢復過程得花上一段時間,在這個過程中其他的slave就無法和主庫同步了。
5.更新快
這點好像從我接觸到redis到目前為止 已經發了大版本就4個,小版本沒算過。redis作者是個非常積極的人,無論是郵件提問還是論壇發帖,他都能及時耐心的為你解答,維護度很高。有人維護的話,讓我們用的也省心和放心。目前作者對redis 的主導開發方向是redis的集群方向。
所以如果希望簡單就用ehcache,如果開發任務比較復雜,希望得到比較多的支持什麼的就redis
5. 請問一下,有誰知道redis官網的Java jar 包在哪個地方下載嗎
https://mvnrepository.com/artifact/redis.clients/jedis/2.9.0這個網大臘址有滾睜滑早薯提供,jar包,gradle,maven幾個方式的
6. java鏈接redis 是什麼協議
要在Java程序中使用使用操作Redis,需要確保有Redis的Java驅動程序和埋帶Java設置在機器上。可以檢查看Java教程-學習如何在機器上安裝Java。現在,讓我們來看看彎扮蘆如何設置Redis的Java驅動程序。
需要下載jedis.jar。請一定要下載它的最新缺賣版本。
需要包括jedis.jar到你的類路徑中。
連接到Redis伺服器
import redis.clients.jedis.Jedis;
public class RedisJava {
public static void main(String[] args) {
//Connecting to Redis server on localhost
Jedis jedis = new Jedis("localhost");
System.out.println("Connection to server sucessfully");
//check whether server is running or not
System.out.println("Server is running: "+jedis.ping());
}
}
7. 《Redis 4.x Cookbook》txt下載在線閱讀全文,求百度網盤雲資源
《Redis 4.x Cookbook》(Pengcheng Huang)電子書網盤下載免費在線閱讀
鏈接: https://pan..com/s/1vnOtgYaVIAPZjViatbxmug
書名:Redis 4.x Cookbook
作者:Pengcheng Huang
出版社:Packt Publishing
出版年份:2018-2-28
頁數:衫納孝382
內容簡茄彎介:
Key Features
Build, deploy and administer high performance and scalable applications in Redis
Covers a range of important tasks - including development and administration of Redis
A practical guide that takes your understanding of Redis to the next level
Book Description
Redis is considered the world's most popular key-value store database. Its versatility and the wide variety of use cases it enables have made it a popular choice of database for many enterprises. Based on the latest version of Redis, this book provides both step-by-step recipes and relevant the background information required to utilize its features to the fullest. It covers everything from a basic understanding of Redis data types to advanced aspects of Redis high availability, clustering, administration, and troubleshooting. This book will be your great companion to master all aspects of Redis.
The book starts off by installing and configuring Redis for you to get started with ease. Moving on, all the data types and features of Redis are introced in detail. Next, you will learn how to develop applications with Redis in Java, python, and the Spring Boot web framework. You will also learn replication tasks, which will help you to troubleshoot replication issues. Furthermore, you will learn the steps that need to be undertaken to ensure high availability on your cluster and ring proction deployment. Toward the end of the book, you will learn the topmost tasks that will help you to troubleshoot your ecosystem efficiently, along with extending Redis by using different moles.
What you will learn
Install and configure your Redis instance
Explore various data types and commands in Redis
Build client-side applications as well as a Big Data framework with Redis
Manage data replication and persistence in Redis
Implement high availability and data sharding in Redis
Extend Redis with Redis Mole
Benchmark, debug, fine-tune and troubleshoot various issues in Redis
作者簡介:
Pengcheng Huang
Pengcheng Huang has been working as a software engineer and team lead of the Big Data Infrastructure team at China Minsheng Bank (ranked No.29 in the Top 1000 World Banks in 2017) for more than 5 years providing Big data infrastructure services for the whole bank. Also, as the technical director of Redis at the bank, he devotes much of his energy making better use of Redis in the proction environment. He is also a Redis contributor. You can reach him on LinkedIn by searching for gnuhpc.
Zuofei Wang
Zuofei Wang is an experienced software engineer living in the San Francisco Bay area. With more than 5 years of experience in the software instry, he has worked on projects with different technologies and is currently employed by Airbnb Inc. Zuofei is passionate about learning new things and sharing his knowledge. He also enjoys reading, traveling, and ham radio in his spare time.
8. 怎樣使用redis緩存,java代碼
應用Redis實現數據的讀寫,同時利用隊列處理器定時將數據寫入mysql。
同時要注意避免沖突,在redis啟動時去mysql讀取所有表鍵值存入redis中,往redis寫數據時,對redis主鍵自增並進行讀取,若mysql更新失敗,則需要及時清除緩存及同步redis主鍵。
這樣處理,主要是實時讀寫redis,而mysql數據則通過隊列非同步處理,緩解mysql壓力,不過這種方法應用場景主要基於高並發,而且redis的高可用集群架構相對更復雜,一般不是很推薦。
9. 誰有好用的Java使用redis的封裝的示例
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();
}
}