java单机操作redis3.2.10和集群操作增删改查

先直接附上单机版的连接和增删改查,7000-7005是端口号
package com.yilian.util;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set; import redis.clients.jedis.Jedis;
public class RedisTest {
Jedis js = null;
private String host = "101.236.39.141";
private int port = 6379; /**
* 链接redis数据库,进行初始化
*
* @param hostUrl:链接服务器的ip/名称
* @param hostPort:主机的端口号
* @return:返回是否初始化链接成功
*/
public boolean init(String host, int port) {
if (js == null) {
js = new Jedis(host, port);
}
if (js != null) {
System.out.println("初始化成功");
return true;
} else {
return false;
}
} /**
* 链接redis数据库,进行初始化
*
* @param host:链接服务器的ip/名称
* @return:返回是否初始化链接成功
*/
public boolean init(String host) {
if (js == null) {
js = new Jedis(host);
}
if (js != null) {
System.out.println("初始化成功");
return true;
} else {
return false;
}
} /**
* 新增数据
*
* @param key:新增数据的键
* @param value:新增数据的值
* @return:返回boolean值,表示是否新增数据成功
*/
public boolean set(String key, String value) { if (js.exists(key)) {
System.out.println(key + "已存在");
System.out.println("若要修改数据请使用update()方法");
return false;
} else {
js.set(key, value);
if (js.exists(key)) {
if (value.equals(js.get(key))) {
System.out.println("增加数据成功");
return true;
} else {
System.out.println("增加数据失败");
return false;
}
} else {
System.out.println("增加数据失败");
return false;
}
}
} /**
* 添加多条数据
*
* @param map:放置多条数据的键值对集合
* @return:返回boolean值,表示是否新增数据全部成功
*/
public boolean sets(Map<String, String> map) {
boolean sets = true;
for (Entry<String, String> e : map.entrySet()) {
String key = e.getKey();
String value = e.getValue();
boolean set = set(key, value);
if (!set) {
sets = false;
}
}
return sets;
} /**
* 删除数据
*
* @param key:要删除数据的key
* @return:返回boolean值,表示是否删除成功
*/
public boolean delete(String key) { if (js.exists(key)) {
if (js.del(key) == 1) {
System.out.println("删除数据成功");
return true;
} else {
System.out.println("删除数据失败");
return false;
}
} else {
System.out.println(key + "不存在");
return false;
}
} /**
* 删除一组数据
*
* @param keys:要删除数据键集合
* @return:返回boolean值,表示是否全部删除成功
*/
public boolean deletes(String[] keys) {
boolean deletes = true;
for (String key : keys) {
boolean delete = delete(key);
if (!delete) {
deletes = false;
}
}
return deletes;
} /**
* 修改数据
*
* @param key:要修改数据的key
* @param value:要修改数据的值
* @return:返回boolean值,表示是否修改成功
*/
public boolean update(String key, String value) {
if (js.exists(key)) {
js.set(key, value);
if (value.equals(js.get(key))) {
System.out.println("修改数据成功");
return true;
} else {
System.out.println("修改数据失败");
return false;
}
} else {
System.out.println(key + "不存在");
System.out.println("若要新增数据请使用set()方法");
return false;
}
} /**
* 获取表中数据
*
* @param key:要查询的key
* @return:返回查找到的数据;如果键不存在则返回null;
*/
public String get(String key) {
if (js.exists(key)) {
System.out.println(js.get(key));
return js.get(key);
} else {
System.out.println(key + "不存在");
return null;
}
}
/**
* 获取多条key的值
* @param keys:多条key的集合
* @return
*/
public Map<String, String> gets(String[] keys) {
Map<String, String> map = new HashMap<String, String>();
for (String key : keys) {
if (js.exists(key)) {
String value = js.get(key);
map.put(key, value);
System.out.println(key + "-" + value);
} else {
System.out.println(key + "不存在");
}
}
return map;
} /**
* 获得所有数据的键
*/
public void getKeys() {
Set<String> set = js.keys("*");
if (set.size() != 0) {
Iterator<String> it = set.iterator();
while (it.hasNext()) {
String key = it.next();
System.out.println(key);
}
} else {
System.out.println("数据库暂时没有数据");
}
} /**
* 查询所有数据
*/
public void getAll() {
Set<String> set = js.keys("*");
if (set.size() != 0) {
Iterator<String> it = set.iterator();
while (it.hasNext()) {
String key = it.next();
String value = js.get(key);
System.out.println(key + "-" + value);
}
} else {
System.out.println("数据库暂时没有数据");
}
} /**
* 关闭链接
*/
public void unInit() {
if (js != null) {
js.close();
js = null;
}
} public static void main(String[] args) {
RedisTest re=new RedisTest();
re.init("101.236.39.141", 7000);
re.set("11", "2");
re.get("11");
}
}
集群操作,它会自己按照节点去分发
package com.yilian.util;
import java.util.HashSet;
import java.util.Set; import org.apache.commons.pool2.impl.GenericObjectPoolConfig; import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;
public class ClusterDemo {
private static JedisCluster jedisCluster=null;
private static Set<HostAndPort> hostAndPorts=null; public static Set<HostAndPort> getHostAndPort(String hostAndPort){
Set<HostAndPort> hap = new HashSet<HostAndPort>();
String[] hosts = hostAndPort.split(",");
String[] hs = null;
for(String host:hosts){
hs=host.split(":");
hap.add(new HostAndPort(hs[0], Integer.parseInt(hs[1])));
}
return hap;
} public boolean set(String key, String value) {
if (jedisCluster.exists(key)) {
System.out.println(key + "已存在");
System.out.println("若要修改数据请使用update()方法");
return false;
} else {
jedisCluster.set(key, value);
if (jedisCluster.exists(key)) {
if (value.equals(jedisCluster.get(key))) {
System.out.println("增加数据成功");
return true;
} else {
System.out.println("增加数据失败");
return false;
}
} else {
System.out.println("增加数据失败");
return false;
}
}
} public static JedisCluster getJedisCluster(){
GenericObjectPoolConfig gopc = new GenericObjectPoolConfig();
gopc.setMaxTotal(32);
gopc.setMaxIdle(4);
gopc.setMaxWaitMillis(6000);
hostAndPorts = getHostAndPort("101.236.39.141:7000");
hostAndPorts = getHostAndPort("101.236.39.141:7003");
hostAndPorts = getHostAndPort("101.236.46.113:7001");
hostAndPorts = getHostAndPort("101.236.46.113:7004");
hostAndPorts = getHostAndPort("101.236.46.114:7002");
hostAndPorts = getHostAndPort("101.236.46.114:7005");
jedisCluster = new JedisCluster(hostAndPorts,gopc);
return jedisCluster;
} public static void main(String[] args) {
jedisCluster = getJedisCluster();
System.out.println(jedisCluster.get("11"));
System.out.println(jedisCluster.get("12"));
ClusterDemo d=new ClusterDemo();
d.set("14", "4");
// jedisCluster.set("11", "2");
} }
java单机操作redis3.2.10和集群操作增删改查的更多相关文章
- python操作三大主流数据库(2)python操作mysql②python对mysql进行简单的增删改查
python操作mysql②python对mysql进行简单的增删改查 1.设计mysql的数据库和表 id:新闻的唯一标示 title:新闻的标题 content:新闻的内容 created_at: ...
- 【良心保姆级教程】java手把手教你用swing写一个学生的增删改查模块
很多刚入门的同学,不清楚如何用java.swing去开发出一个系统? 不清楚如何使用java代码去操作数据库进行增删改查一些列操作,不清楚java代码和数据库(mysql.sqlserver)之间怎么 ...
- 【温故知新】Java web 开发(四)JSTL 与 JDBC 的增删改查
本篇开始使用 jstl 这个 jsp 的标签库,在同一个 Servlet 中实现处理 CRUD 请求,以及使用 jdbc 数据库基本操作.然后你会发现 Servlet 和 jdbc 还是有很多不方便之 ...
- java连接sql server--关于登录验证及对数据库增删改查应用
一:步骤## 1.sql server建立数据库和相关表 2.建立数据源 (1).打开控制面板找到管理,打开ODBC选项或直接搜索数据源 (2).打开数据源配置后点击添加,选择sql server ...
- 用Java中的File类模拟实现对系统文件的增删改查效果
码字不易,三连支持一波吧 IO操作向来是各大语言的热区,而对文件的操作也是重中之重. 那么在Java中也给我们提供了很多关于文件操作的类.今天我就用一个比较基本的File类来模拟实现对文件的增删改查效 ...
- python web.py操作mysql数据库,实现对数据库的增删改查操作
使用web.py框架,实现对mysql数据库的增删改查操作: 该示例代码中连接的是本地数据库testdb,user表,表结构比较简单,只有两个字段:mobile和passwd,类型均为字符型 实际应用 ...
- 1 集群状态、增删改查、全量替换、强制创建、设置单个index的分片数副本数
检查集群健康状态,可以看集群颜色.(黄色:primary shard都正常,replica不正常) GET /_cat/health?v 列出集群所有index GET /_cat/indices?v ...
- Java用户名登录学生信息管理系统并对其进行增删改查操作
package zzzzzzzz; import java.io.*;//作者:凯鲁嘎吉 - 博客园//http://www.cnblogs.com/kailugaji/ public class T ...
- mysql详解常用命令操作,利用SQL语句创建数据表—增删改查
关系型数据库的核心内容是 关系 即 二维表 MYSQL的启动和连接show variables; [所有的变量] 1服务端启动 查看服务状态 sudo /etc/init.d/mysql status ...
随机推荐
- JSP--TOMCAT-MYSQL web页面删除
deleteStudentjsp.jsp页面代码 <%@ page language="java" contentType="text/html; charset= ...
- Tensorflow中的滑动平均模型
原文链接 在Tensorflow的教程里面,使用梯度下降算法训练神经网络时,都会提到一个使模型更加健壮的策略,即滑动平均模型. 基本思想 在使用梯度下降算法训练模型时,每次更新权重时,为每个权重维护一 ...
- TJU Problem 2857 Digit Sorting
原题: 2857. Digit Sorting Time Limit: 1.0 Seconds Memory Limit: 65536KTotal Runs: 3234 Accepted ...
- [LeetCode&Python] Problem 917. Reverse Only Letters
Given a string S, return the "reversed" string where all characters that are not a letter ...
- 国内Ubuntu镜像源
国内有很多Ubuntu的镜像源,包括阿里的.网易的,还有很多教育网的源,比如:清华源.中科大源. 我们这里以中科大的源为例讲解如何修改Ubuntu 18.04里面默认的源. 编辑/etc/apt/so ...
- .NET 中什么样的类是可使用 await 异步等待的?
我们已经知道 Task 是可等待的,但是去看看 Task 类的实现,几乎找不到哪个基类.接口或者方法属性能够告诉我们与 await 相关. 而本文将探索什么样的类是可使用 await 异步等待的? D ...
- beautiful number 数位DP codeforces 55D
题目链接: http://codeforces.com/problemset/problem/55/D 数位DP 题目描述: 一个数能被它每位上的数字整除(0除外),那么它就是beautiful nu ...
- POJ3669解题报告(bfs)
POJ3669http://poj.org/problem?id=3669 很明显是一道bfs的题目 由于陨石的降临具有时刻性,所以地图是随时间变化的, 所以可以使用结构体来存储陨石下落的时刻以及位置 ...
- 【多线程学习笔记整理】002_线程的停止、暂停、与yield
一.停止线程的三种方式 停止线程是多线程中的一个很重要的点,停止线程意味着在线程处理完当前任务之前终止正在做的操作,但是如果不能正确的操作,可能会发生不可预期的结果. 1)使用退出标志,使线程正常退出 ...
- MySQL表类型MyISAM/InnoDB的区别(解决事务不回滚的问题)(转)
本文参考: http://mysqlpub.com/thread-5383-1-1.html http://blog.csdn.net/c466254931/article/details/53463 ...