您好,欢迎来到划拓汽车网。
搜索
您的当前位置:首页Java使用Redis初探

Java使用Redis初探

来源:划拓汽车网


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 redis-latest

C:\redis-latest>redis-server redis.windows.conf --maxmemory 200m
 _._
 _.-``__ ''-._
 _.-`` `. `_. ''-._ Redis 2.8.17 (00000000/0)  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 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","6653132");//设置多个键值对
	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 map = new HashMap();
	map.put("name", "小露");
	map.put("sex", "男");
	map.put("email", "haha@fcs.com");
	jedis.hmset("user", map);//相当于给map再取一个名字
	
	List 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 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 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
哎,先到这吧。。




Copyright © 2019- huatuoask.net 版权所有

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务