基于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的统一来保证无 ...
随机推荐
- php之上传小案例,根据时间:月日分创建目录并随机生成文件名
<?php /* 接收文件,并分目录存储,生成随机文件名 1.根据时间戳,并按一定规则创建目录 2.获取文件名的后缀名 3.判断大小 */ //根据月日分计算并创建目录 function mk_ ...
- 微信JS-SDK实际分享功能
为了净化网络,整顿诱导分享及诱导关注行为,微信于2014年12月30日发布了<微信公众平台关于整顿诱导分享及诱导关注行为的公告>,微信平台开发者发现,原有的微信分享功能不能用了,在ipho ...
- CSS3 box-shadow(阴影使用)
from: http://jingyan.baidu.com/article/03b2f78c4d9fae5ea237aea6.html css3 box-shadow 内阴影与外阴影 1- box- ...
- python学习笔记(一)元组,序列,字典
python学习笔记(一)元组,序列,字典
- C语言中的字节对齐以及其相关处理
首先,我们来了解下一些基本原理: 一.什么是字节对齐一个基本类型的变量在内存中占用n个字节,则该变量的起始地址必须能够被n整除,即: 存放起始地址 % n = 0,那么,就成该变量是字节对齐的;对于结 ...
- HDOJ(HDU) 2186 悼念512汶川大地震遇难同胞——一定要记住我爱你
Problem Description 当抢救人员发现她的时候,她已经死了,是被垮塌下来的房子压死的,透过那一堆废墟的的间隙可以看到她死亡的姿势,双膝跪着,整个上身向前匍匐着,双手扶着地支撑着身体,有 ...
- UVa11613 Acme Corporation(最小费用流)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=33452 [思路] 最小费用流. 构图: 1 每个月建立2个点,建立 ...
- Registering Shell Extension Handlers
最近在做Windows shell extension 的开发工作,对shell extension handler的注册机制有点疑问,以下摘自MSDN:http://msdn.microsoft.c ...
- rpm常用操作
1.查询.检查软件包 rpm {-q|--query} [select-options] [query-options] rpm {-V|--verify} [select-options] [ver ...
- [AS/400] Control Language(CL) 基本概念
本文内容源于 Go4AS400 简介 AS400 Control Language(CL) 是由指令(Command)组合而成,用于控制操作和调用系统功能.在 CL 程序中,指令用于和系统 OS400 ...