搜尋
首頁資料庫mysql教程Java使用Redis初探

Java使用Redis初探

Jun 07, 2016 pm 04:10 PM
javaredis使用初探概念相關

Redis的相关概念不做介绍了,大家也可以先了解下Memcached,然后比较下二者的区别,就会有个整体的印象。 服务器端通常选择Linux , Redis对于linux是官方支持的,使用资料很多,需要下载相关服务器端程序 ,然后解压安装。因为能力和条件有限,我只简单介绍下

Redis的相关概念不做介绍了,大家也可以先了解下Memcached,然后比较下二者的区别,就会有个整体的印象。

服务器端通常选择Linux , Redis对于linux是官方支持的,使用资料很多,需要下载相关服务器端程序 ,然后解压安装。因为能力和条件有限,我只简单介绍下windows上如何安装和使用,有兴趣的可以娱乐一下。

服务器端程序下载地址:https://github.com/ServiceStack/redis-windows.git

如果不好操作的话到这来:http://download.csdn.net/detail/u013283727/8212831

下载完后使用cmd进入下载文件的目录中,尝试以下操作:

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\>cd redis64-latest

C:\redis64-latest>redis-server redis.windows.conf --maxmemory 200m
                _._
           _.-``__ ''-._
      _.-``    `.  `_.  ''-._           Redis 2.8.17 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._
 (    '      ,       .-`  | `,    )     Running in stand alone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 4552
  `-._    `-._  `-./  _.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |           http://redis.io
  `-._    `-._`-.__.-'_.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |
  `-._    `-._`-.__.-'_.-'    _.-'
      `-._    `-.__.-'    _.-'
          `-._        _.-'
              `-.__.-'

[4552] 01 Dec 13:38:53.147 # Server started, Redis version 2.8.17
[4552] 01 Dec 13:38:53.147 * DB loaded from disk: 0.000 seconds
[4552] 01 Dec 13:38:53.147 * The server is now ready to accept connections on po
rt 6379


客户端使用java程序来连接,在这里介绍两种常用的方法

(Jar包直接找maven要:http://www.mvnrepository.com 一搜就出来了)

1.Redisson

/**
 * @author fcs
 * Redisson Example
 */
public class RedissonTest {
	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("redis连接接成功。。。。。");
		
		//2.测试concurrentMap,put时候就会同步到redis中
		ConcurrentMap<String, String> map = redisson.getMap("firstMap");
		map.put("changshengfeng", "男");
		map.put("yongtaoliu", "男");
		map.put("qiaozhu", "女");
		
		ConcurrentMap resultMap = redisson.getMap("firstMap");
		System.out.println("resultMap == "+resultMap.keySet());
		//关闭连接
		redisson.shutdown();
	}
}

2.Jedis

/**
 * @author fcs
 * test about jedis
 * Dec 1, 2014
 */
public class JedisTest {
	private static Jedis jedis;
	
	@Before
	public void setup(){
		jedis = new Jedis("127.0.0.1", 6379);
		System.out.println("Redis服务器已连接....");
//		jedis.auth("admin");   //权限验证
	}
	
	/**
	 * redis 存储字符串
	 */
	@Test
	public void testString(){
		//添加数据
		jedis.set("name", "fcs");
		System.out.println(jedis.get("name"));//获取结果
		
		jedis.append("name", "is handsome");//拼接
		
		jedis.del("name");//删除某个键
		System.out.println(jedis.get("name"));
		
		jedis.mset("name","changsheng","age","22","qq","646653132");//设置多个键值对
		jedis.incr("age");//加1操作   在投票中可能用的上
		System.out.println(jedis.get("name")+"--"+jedis.get("age")+"--"+jedis.get("qq"));
	}
	
	/**
	 * 操作List
	 */
	@Test
	public void testList(){
		jedis.del("java framework");
		System.out.println(jedis.lrange("java framework", 0, -1));
		//先向key java framework存放三条数据
		jedis.lpush("java framework", "spring");
		jedis.lpush("java framework", "struts");
		jedis.lpush("java framework", "hibernate");
		//再取出所有数据jedis.lrange是按范围取出  第一个是key  第二个是其实位置  第三个是结束位置
		System.out.println(jedis.lrange("java framework", 0, -1));
		
		jedis.del("java framework");
		jedis.rpush("java framework", "spring");
		jedis.rpush("java framework", "struts");
		jedis.rpush("java framework", "hibernate");
		//再取出所有数据jedis.lrange是按范围取出  第一个是key  第二个是其实位置  第三个是结束位置
		System.out.println(jedis.lrange("java framework", 0, -1));
		
	}
	
	/**
	 * 操作Set
	 */
	@Test
	public void testSet(){
		jedis.sadd("haha", "why");
		jedis.sadd("haha", "you");
		jedis.sadd("haha", "so");
		jedis.sadd("haha", "diao");
		jedis.sadd("haha", "?");
		//移除
		jedis.srem("haha", "?");
		System.out.println("判断?是不是haha集合的元素:"+jedis.sismember("haha", "?"));
		System.out.println("获取所有加入的value:"+jedis.smembers("haha"));
		System.out.println("返回给定集合名的一个随机的value:"+jedis.srandmember("haha"));
		System.out.println("返回集合的元素个数:"+jedis.scard("haha"));
		
	}
	
	/**
	 * redis 操作map
	 */
	@Test
	public void testmap(){
		Map<String,String> map = new HashMap<String, String>();
		map.put("name", "小露");
		map.put("sex", "男");
		map.put("email", "haha@fcs.com");
		jedis.hmset("user", map);//相当于给map再取一个名字
		
		List<String> rsmap = jedis.hmget("user", "name","sex");//后面是一个可变参数列表  去某个map中的一些key代表的值
		System.out.println(rsmap);
		
		//删除map中的某个键值
		jedis.hdel("user", "email");
		System.out.println("删除后----email"+jedis.hmget("user", "email"));
		System.out.println("是否存在key为user的记录:"+jedis.exists("user"));
		System.out.println("key为user的map中存放的值的个数:"+jedis.hlen("user"));
		System.out.println("返回map对象中所有的key:"+jedis.hkeys("user"));
		System.out.println("返回map对象中所有的value:"+jedis.hvals("user"));
		
		//使用迭代器
		Iterator<String> iter = jedis.hkeys("user").iterator();
		System.out.println("***************使用迭代器***************");
		while(iter.hasNext()){
			String key = iter.next();//每次向后越过一个对象
			System.out.println(key+":"+jedis.hmget("user", key));//迭代key   根据key再取值value
		}

	}
	
	/**
	 * 这里在前面执行完之后直接再去拿值   试试这些进驻内存的数据是否还在
	 * 可以把服务器端关掉再重启    再直接运行这个方法看看
	 * 如果还有数据就说明该数据库自动完成了持久化     它有默认的持久化机制
	 */
	@Test
	public void testNoSet(){
		Iterator<String> iter = jedis.hkeys("user").iterator();
		System.out.println("***************使用迭代器***************");
		while(iter.hasNext()){
			String key = iter.next();//每次向后越过一个对象
			System.out.println(key+":"+jedis.hmget("user", key));//迭代key   根据key再取值value
		}
	}

//	@AfterClass   测试整个类时可以用    会关闭服务器端程序
//	public static void close(){
//		jedis.shutdown();//不能用@After   不然每次执行完一个方法都会关闭服务器
//		System.out.println("连接已关闭.....");
//	}
	
}


这时候可以看到cmd中有一些日志记录:(这就是它默认的持久化机制,可以在redis.windows.conf配置文件中查看)

[3972] 01 Dec 13:59:04.073 * 1 changes in 900 seconds. Saving...
[3972] 01 Dec 13:59:04.229 # fork operation complete
[3972] 01 Dec 13:59:04.229 * Background saving terminated with success
[3972] 01 Dec 14:20:05.127 * 1 changes in 900 seconds. Saving...
[3972] 01 Dec 14:20:05.267 # fork operation complete
[3972] 01 Dec 14:20:05.267 * Background saving terminated with success
[3972] 01 Dec 14:35:06.074 * 1 changes in 900 seconds. Saving...
[3972] 01 Dec 14:35:06.204 # fork operation complete
[3972] 01 Dec 14:35:06.224 * Background saving terminated with success

哎,先到这吧。。。。




陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
您什麼時候應該使用複合索引與多個單列索引?您什麼時候應該使用複合索引與多個單列索引?Apr 11, 2025 am 12:06 AM

在數據庫優化中,應根據查詢需求選擇索引策略:1.當查詢涉及多個列且條件順序固定時,使用複合索引;2.當查詢涉及多個列但條件順序不固定時,使用多個單列索引。複合索引適用於優化多列查詢,單列索引則適合單列查詢。

如何識別和優化MySQL中的慢速查詢? (慢查詢日誌,performance_schema)如何識別和優化MySQL中的慢速查詢? (慢查詢日誌,performance_schema)Apr 10, 2025 am 09:36 AM

要優化MySQL慢查詢,需使用slowquerylog和performance_schema:1.啟用slowquerylog並設置閾值,記錄慢查詢;2.利用performance_schema分析查詢執行細節,找出性能瓶頸並優化。

MySQL和SQL:開發人員的基本技能MySQL和SQL:開發人員的基本技能Apr 10, 2025 am 09:30 AM

MySQL和SQL是開發者必備技能。 1.MySQL是開源的關係型數據庫管理系統,SQL是用於管理和操作數據庫的標準語言。 2.MySQL通過高效的數據存儲和檢索功能支持多種存儲引擎,SQL通過簡單語句完成複雜數據操作。 3.使用示例包括基本查詢和高級查詢,如按條件過濾和排序。 4.常見錯誤包括語法錯誤和性能問題,可通過檢查SQL語句和使用EXPLAIN命令優化。 5.性能優化技巧包括使用索引、避免全表掃描、優化JOIN操作和提升代碼可讀性。

描述MySQL異步主奴隸複製過程。描述MySQL異步主奴隸複製過程。Apr 10, 2025 am 09:30 AM

MySQL異步主從復制通過binlog實現數據同步,提升讀性能和高可用性。 1)主服務器記錄變更到binlog;2)從服務器通過I/O線程讀取binlog;3)從服務器的SQL線程應用binlog同步數據。

mysql:簡單的概念,用於輕鬆學習mysql:簡單的概念,用於輕鬆學習Apr 10, 2025 am 09:29 AM

MySQL是一個開源的關係型數據庫管理系統。 1)創建數據庫和表:使用CREATEDATABASE和CREATETABLE命令。 2)基本操作:INSERT、UPDATE、DELETE和SELECT。 3)高級操作:JOIN、子查詢和事務處理。 4)調試技巧:檢查語法、數據類型和權限。 5)優化建議:使用索引、避免SELECT*和使用事務。

MySQL:數據庫的用戶友好介紹MySQL:數據庫的用戶友好介紹Apr 10, 2025 am 09:27 AM

MySQL的安裝和基本操作包括:1.下載並安裝MySQL,設置根用戶密碼;2.使用SQL命令創建數據庫和表,如CREATEDATABASE和CREATETABLE;3.執行CRUD操作,使用INSERT,SELECT,UPDATE,DELETE命令;4.創建索引和存儲過程以優化性能和實現複雜邏輯。通過這些步驟,你可以從零開始構建和管理MySQL數據庫。

InnoDB緩衝池如何工作,為什麼對性能至關重要?InnoDB緩衝池如何工作,為什麼對性能至關重要?Apr 09, 2025 am 12:12 AM

InnoDBBufferPool通過將數據和索引頁加載到內存中來提升MySQL數據庫的性能。 1)數據頁加載到BufferPool中,減少磁盤I/O。 2)臟頁被標記並定期刷新到磁盤。 3)LRU算法管理數據頁淘汰。 4)預讀機制提前加載可能需要的數據頁。

MySQL:初學者的數據管理易用性MySQL:初學者的數據管理易用性Apr 09, 2025 am 12:07 AM

MySQL適合初學者使用,因為它安裝簡單、功能強大且易於管理數據。 1.安裝和配置簡單,適用於多種操作系統。 2.支持基本操作如創建數據庫和表、插入、查詢、更新和刪除數據。 3.提供高級功能如JOIN操作和子查詢。 4.可以通過索引、查詢優化和分錶分區來提升性能。 5.支持備份、恢復和安全措施,確保數據的安全和一致性。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器