基于redis 内存数据库简单使用
在ecplise中使用内存数据的客端户,前提要准备要下载两个jar包
前提准备做好了,那我们就开启redis的服务,打开一个命令窗体输入例如以下命令:redis-server 或redis-server redis根目\redis.conf
server已经开启了。注意端号是6377
2.在eclipse 创建一个项目,把redist须要的包导入项目中
3.写一个Jedis工具类
public class JedisUtil {
private static String HOST="127.0.0.1"; //本机地址
private static Integer PORT=6379; //服务port
private static JedisPoolConfig config; //连接池的配置对象
private static JedisPool pool; //连接池对象
static{
config = new JedisPoolConfig();
config.setMaxIdle(1024*10); //设置内存大小
pool = new JedisPool(config,HOST);
}
/**
*
* @return 从连接池里获取一个Jedis对象
*/
public static Jedis getPoolJedis(){
return pool.getResource();
}
/**
* 手动把Jedis对象。回放到连接池里
*/
public static void returnPoolJedis(Jedis jedis){
pool.returnResource(jedis);
}
/**
* @return 直接创建一个Jedis连接
*/
public static Jedis getJedis(){
return new Jedis(HOST, PORT);
}
}
4.写一个client类操作jedis
public class Client {
public static void main(String[] args) {
//simpleSet();
mSet();
}
private static void mSet() {
//注意 假设使用 JedisUtil.getJedis(); 是直接创建一个jredis对象,所以不受连接池管理。所以不能回放到连接池里
Jedis jedis = JedisUtil.getPoolJedis();
//设置值多个值
jedis.mset("userName","user1","pwd","123");
//取值
List<String> list = jedis.mget("userName","pwd");
for (String string : list) {
System.out.println(string);
}
jedis.flushDB();
JedisUtil.returnPoolJedis(jedis);
}
private static void simpleSet() {
Jedis jedis = JedisUtil.getPoolJedis();
//设置值
jedis.set("userName", "user1");
//取值
System.out.println("userName:"+jedis.get("userName"));
//清空内存数据库
jedis.flushDB();
JedisUtil.returnPoolJedis(jedis);
}
后补集合的简单操作
/**
* hash 操作
*/
private static void hashSet(){
Jedis jedis = JedisUtil.getPoolJedis();
//set,设置指定的哈希表里的某个域的值
jedis.hset("key1", "user1", "123");
jedis.hset("key2", "user2", "456");
jedis.hset("key3", "user3", "789");
//get,取出指定哈希表里的某个域的值
System.out.println(jedis.hget("key1", "user1"));
} /**
* hash map操作
*/
public static void mapSet(){
Jedis jedis = JedisUtil.getPoolJedis();
Map<String,String> map=new HashMap<String,String>();
map.put("user1", "123");
map.put("user2", "456");
map.put("user3", "789");
//将一个map集合的键/值,设置到哈希表里。
jedis.hmset("map", map);
//取出哈希表域的值,也就map的key
//System.out.println(jedis.hmget("map", "user3"));
//取出哈希表多个域的值
List<String> list = jedis.hmget("map", "user1","user2","user3");
for (String string : list) {
System.out.println("值:"+string);
}
} /**
* 返回哈希表key中,全部的域与值
*/
public static void getAll(){
Jedis jedis = JedisUtil.getPoolJedis();
Map<String,String> map = jedis.hgetAll("map");
Set<String> keySet = map.keySet();
Iterator<String> i = keySet.iterator();
while(i.hasNext()){
System.out.println(map.get(i.next()));
}
//jedis.del(key) key field [field ...]删除哈希表key中的一个或多个指定域。
//jedis.hlen(key) key 返回哈希表key中域的数量。 //jedis.hexists(key, field) key field查看哈希表key中,给定域field是否存在。
//jedis.hincrByFloat(key, field, increment) key field increment为哈希表key中的域field的值加上增量increment。 //jedis.hkeys(key) key返回哈希表key中的全部域。 //jedis.hvals(key) key返回哈希表key中的全部值。
} /**
* list操作
*/
public static void list(){
Jedis jedis = JedisUtil.getPoolJedis();
//设置值,是以栈的存储方式,先进后出。jedis.lpush(key, strings) strings能够是设置多个值。
jedis.lpush("list","index1");
jedis.lpush("list","index2");
jedis.lpush("list","index3"); //取值,依据開始下标与结束下标的范围取值
List<String> list = jedis.lrange("list", 0,2);
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
//jedis.llen(key) key 返回列表key的长度
//jedis.lrem(key, count, value) 依据參数count的值,移除列表中与參数value相等的值
} /**
* set操作
*/
public static void set(){
Jedis jedis = JedisUtil.getPoolJedis();
//设置值
jedis.sadd("set", "s1","s2","s3","s4");
//移除某个元素,能够移出一个。也能够移出多个。
jedis.srem("set", "s1","s2");
//获出全部的元素
Set<String> set = jedis.smembers("set");
Iterator<String> i = set.iterator();
while(i.hasNext())
System.out.println(i.next());
}
}
如今能够在redistclient对数据进行取值
打开一个命令窗体,输入命令 redis-cli 开启client,原后进行赋值
基于redis 内存数据库简单使用的更多相关文章
- 基于Redis的简单分布式锁的原理
参考资料:https://redis.io/commands/setnx 加锁是为了解决多线程的资源共享问题.Java中,单机环境的锁可以用synchronized和Lock,其他语言也都应该有自己的 ...
- 基于 Redis 实现简单的分布式锁
摘要 分布式锁在很多应用场景下是非常有效的手段,比如当运行在多个机器上的不同进程需要访问同一个竞争资源的时候,那么就会涉及到进程对资源的加锁和释放,这样才能保证数据的安全访问.分布式锁实现的方案有很多 ...
- 基于Redis实现简单的分布式锁【理论】
摘要 分布式锁在很多应用场景下是非常有效的手段,比如当运行在多个机器上的不同进程需要访问同一个竞争资源的时候,那么就会涉及到进程对资源的加锁和释放,这样才能保证数据的安全访问.分布式锁实现的方案有很多 ...
- 基于Redis实现简单的分布式锁
在分布式场景下,有很多种情况都需要实现最终一致性.在设计远程上下文的领域事件的时候,为了保证最终一致性,在通过领域事件进行通讯的方式中,可以共享存储(领域模型和消息的持久化数据源),或者做全局XA ...
- Redis内存数据库在Exchange会议室的应用
本文论述了现有Exchange会议室应用现状和不足之处,并详细介绍了Redis内存数据库在Exchange会议室的应用,并给出了一种高性能的应用架构及采用关键技术和关键实现过程,最终实现大幅改进系统性 ...
- 基于redis有序集合,实现简单的延时任务
基于redis有序集合,实现简单的延时任务 延时任务的场景很多,开发过程中我们经常会遇到,比如说: 1.订单未付款,5分钟后自动取消,这是电商网站非常普遍的需求: 2.用户创建订单不付款,3分钟后自动 ...
- 基于Redis的三种分布式爬虫策略
前言: 爬虫是偏IO型的任务,分布式爬虫的实现难度比分布式计算和分布式存储简单得多. 个人以为分布式爬虫需要考虑的点主要有以下几个: 爬虫任务的统一调度 爬虫任务的统一去重 存储问题 速度问题 足够“ ...
- Redis学习总结(1)——Redis内存数据库详细教程
1.redis是什么 2.redis的作者何许人也 3.谁在使用redis 4.学会安装redis 5.学会启动redis 6.使用redis客户端 7.redis数据结构 – 简介 8.redis数 ...
- Tomcat7基于Redis的Session共享实战二
目前,为了使web能适应大规模的访问,需要实现应用的集群部署.集群最有效的方案就是负载均衡,而实现负载均衡用户每一个请求都有可能被分配到不固定的服务器上,这样我们首先要解决session的统一来保证无 ...
随机推荐
- node应用通过multer模块实现文件上传
multer用于处理文件上传的nodejs中间件,主要跟express框架搭配使用,只支持表单MIME编码为multipart/form-data类型的数据请求. 如果要处理其他编码的表单数据可以通过 ...
- 矩形嵌套问题-ACM集训
参考 http://blog.csdn.net/xujinsmile/article/details/7861412 有n个矩形,每个矩形可以用a,b来描述,表示长和宽.矩形X(a,b)可以嵌套在矩形 ...
- 一些CMS网站系统漏洞,练手用(持续更新)
仅供拿shell,提权测试用,请勿恶意破坏 XuSoft系统: 后台万能密码:'or'='or' 可直接登陆,后台地址 /manage/login.asp inurl:ReadArticlemb.a ...
- 测试通过Word直接发布博文
这里是来自word 2013的一篇测试文章. 测试直接通过Word自带的bloger功能发布博客文章. 这里插入一张图片
- 转:Windows下的PHP开发环境搭建——PHP线程安全与非线程安全、Apache版本选择,及详解五种运行模式。
原文来自于:http://www.ituring.com.cn/article/128439 Windows下的PHP开发环境搭建——PHP线程安全与非线程安全.Apache版本选择,及详解五种运行模 ...
- iso 开发学习--简易音乐播放器(基于iPhone4s屏幕尺寸)
三个按钮 一个进度条 贴图(软件中部分图片,来自网络,如果侵犯了您的权益,请联系我,会立刻撤下) 核心代码 // // ViewController.m // 08-10-MusicPlayer / ...
- visualvm监控jvm及远程jvm监控方法(转)
VisualVM是Sun的一个OpenJDK项目,其目的在于为Java应用创建一个整套的问题解决工具.它集成了多个JDK命令工具的一个可视化工具,它主要用来监控JVM的运行情况,可以用它来查看和浏览H ...
- C# Linq-Aggregate
The easiest to understand definition of Aggregate is that it performs an operation on each element o ...
- Effective c++ 第一章 让自己习惯C++
条款 01:c++是一个语言联邦而不是一种单一的语言, 它包括: 1.C语言:没有模版.没有异常.没有重载…… 2.Object-Oriented C++:class.析构函数.构造函数.封装.继承. ...
- bzoj3230
以前觉得这题好难,现在觉得这题还是挺简单首先看到类似LCP问题不难想到后缀数组吧前后的相似需要我们分别做一个后缀数组和“前缀数组”(就是把字符串反向然后跑后缀数组)这道题的难点就在于如何确定子串是什么 ...