• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Java使用Redis初探

mysql 搞代码 4年前 (2022-01-09) 31次浏览 已收录 0个评论

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

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

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

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

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

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

Microsoft Windows [Version 6.1.7601]Copyright (c) 2009 Microsoft Corporation.  All rights reserved.C:\>cd redis64-latestC:\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 port 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","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 map = new HashMap();		map.put("name", "小露");		map.put("sex", "男");		map.put("email", "[email protected]");		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

哎,先到这吧。。。。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Java使用Redis初探

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址