Java使用Redis初探
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
哎,先到这吧。。。。
Java使用Redis初探的更多相关文章
- Java Lambda表达式初探
Java Lambda表达式初探 前言 本文受启发于Trisha Gee在JavaOne 2016的主题演讲Refactoring to Java 8. Java 8已经发行两年多,但很多人仍然在使用 ...
- java操作redis之jedis篇
首先来简单介绍一下jedis,其实一句话就可以概括的,就是java操作redis的一种api.我们知道redis提供了基本上所有常用编程语言的clients,大家可以到http://redis.io/ ...
- Java连接redis的使用演示样例
Java连接redis的使用演示样例 Redis是开源的key-value存储工具,redis通经常使用来存储结构化的数据,由于redis的key能够包括String.hash.listset和sor ...
- Java的redis 操作类-优化通用版本
java操作redis多节点处理方式;http://blog.itpub.net/29254281/viewspace-1188644/首先maven引入依赖包 <dependency> ...
- redis学习心得之三-【java操作redis】
今天主要是讲讲java对redis的操作,来段代码掩饰下基本操作即可明白. java调用你需要下载jedis.jar包 下载网址:https://github.com/xetorthio/jedis/ ...
- java 操作redis
使用Java操作Redis需要jedis-2.1.0.jar,如果需要使用Redis连接池的话,还需commons-pool-1.5.4.jar package com.test; import ja ...
- java操作redis redis连接池
redis作为缓存型数据库,越来越受到大家的欢迎,这里简单介绍一下java如何操作redis. 1.java连接redis java通过需要jedis的jar包获取Jedis连接. jedis-2.8 ...
- java 操作 redis
1.Java 使用 Redis 只需要下载一个jar包即可 地址:http://maven.outofmemory.cn/redis.clients/jedis/2.5.2/ 工程
- java 使用redis 数据库
[TOC] java 使用redis 数据库 连接redis package com.wsc.redis.Test1; import java.util.List; import java.util. ...
随机推荐
- 【设计模式】 模式PK:门面模式VS中介者模式
1.概述 门面模式为复杂的子系统提供一个统一的访问界面,它定义的是一个高层接口,该接口使得子系统更加容易使用,避免外部模块深入到子系统内部而产生与子系统内部细节耦合的问题.中介者模式使用一个中介对象来 ...
- bzoj 2705: [SDOI2012]Longge的问题——欧拉定理
Description Longge的数学成绩非常好,并且他非常乐于挑战高难度的数学问题.现在问题来了:给定一个整数N,你需要求出∑gcd(i, N)(1<=i <=N). Input 一 ...
- 【BZOJ】1602:[Usaco2008 Oct]牧场行走
[算法]最近公共祖先(LCA) [题解] 点x,y到最近公共祖先z的距离之和相当于x,y到根的距离减去两倍z到根的距离, 即ans=dis[x]+dis[y]-2*dis[z] 记得边数组要开两倍!! ...
- elementui table 多选 获取id
//多选相关方法 toggleSelection(rows) { if (rows) { rows.forEach(row => { this.$refs.multipleTable.toggl ...
- kaggle比赛流程(转)
一.比赛概述 不同比赛有不同的任务,分类.回归.推荐.排序等.比赛开始后训练集和测试集就会开放下载. 比赛通常持续 2 ~ 3 个月,每个队伍每天可以提交的次数有限,通常为 5 次. 比赛结束前一周是 ...
- peewee外键性能问题
# 转载自:https://www.cnblogs.com/miaojiyao/articles/5217757.html 下面讨论一下用peewee的些许提高性能的方法. 避免N+1查询 N+1查询 ...
- Linux中查看进程占用内存的情况【转】
转自:http://hutaow.com/blog/2014/08/28/display-process-memory-in-linux/ Linux中查看某个进程占用内存的情况,执行如下命令即可,将 ...
- 限制printk打印频率函数printk_ratelimit【转】
转自:http://blog.csdn.net/lkkey80/article/details/45190095 版权声明:博文地址 http://blog.csdn.net/lkkey80?view ...
- CentOS7手动编译安装内核4.11.7
1. 进入/usr/src/目录 cd /usr/src 2. 下载内核源码,网址:https://www.kernel.org wget https://cdn.kernel.org/pub/lin ...
- C++ Primer读书笔记
以前阅读学习C++ Primer时的习题代码(当时代码风格格式比较渣): https://github.com/liyuan989/exercise/tree/master/c%2B%2B%20pri ...