Java 使用 Redis存储系统
redis是一个key-value存储系统。它支持存储的value类型很多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。为了保证效率,数据都是缓存在内存中。
在二维码登录功能里面,我后来把uuid由
HashMap<String, UserLoginInfoVO> loginMap存储改成了redis来存储。
比如LongConnectionCheckServlet
// 检测登录
// UserLoginInfoVO userVo = LoginUser.getLoginMap().get(uuid);
// System.out.println("userVo:" + userVo);
// if (userVo != null) {
// bool = false;
// jsonStr = "{\"uname\":\"" + userVo.getUserName() + "\"}";
// LoginUser.getLoginMap().remove(uuid);
// } else {
//
// if (new Date().getTime() - inTime > 5000) {
// bool = false;
// }
// }
if (jedis.get(uuid) != null) {
bool = false;
jsonStr = "{\"uname\":\"" + jedis.get(uuid) + "\"}";
jedis.del(uuid);
} else {
if (new Date().getTime() - inTime > 5000) {
bool = false;
}
}
比如PhoneLoginServlet.java
if (bool) {
// 将登陆信息存入map
// UserLoginInfoVO userVo = LoginUser.getLoginMap().get(uuid);
// if (userVo == null) {
// userVo = new UserLoginInfoVO();
// userVo.setUserName(uname);
// userVo.setUserPass(upwd);
// LoginUser.getLoginMap().put(uuid, userVo);
// } if (jedis.get(uuid) == null) {
jedis.set(uuid, uname);
System.out.println("redis 存储了:" + uuid + " " + uname);
}
}
我只存了uuid和name。反正省了很多代码而且效率提高~
spring下使用很简单:
pom.xml中添加 :
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.6.1</version>
</dependency>
打开cmd,启动redis-server(我把redis文件解压在C盘redis文件夹中):
Redis Java String(字符串)实例
import redis.clients.jedis.Jedis; public class RedisStringJava {
public static void main(String[] args) {
//连接本地的 Redis 服务
Jedis jedis = new Jedis("localhost");
System.out.println("连接成功");
//设置 redis 字符串数据
jedis.set("hello", "lingzi");
// 获取存储的数据并输出
System.out.println("redis 存储的字符串为: "+ jedis.get("hello"));
}
}
编译后结果:
连接成功
redis 存储的字符串为: lingzi
Redis Java List(列表) 实例
import java.util.List;
import redis.clients.jedis.Jedis;
public class RedisJava {
private static Jedis jedis;
public static void main(String[] args) {
// 连接本地的 Redis 服务
jedis = new Jedis("localhost");
System.out.println("连接成功");
// 存储数据到列表中
jedis.lpush("show", "ling");
jedis.lpush("show", "zi");
jedis.lpush("show", "hello");
jedis.lpush("show", "yaha");
// 获取存储的数据并输出
List<String> list = jedis.lrange("show", 0, 3);
for (int i = 0; i < list.size(); i++) {
System.out.println("列表项为: " + list.get(i));
}
}
}
编译后结果:
连接成功
列表项为: yaha
列表项为: hello
列表项为: zi
列表项为: ling
Redis Java Keys实例
import java.util.Iterator;
import java.util.Set;
import redis.clients.jedis.Jedis; public class RedisJava {
private static Jedis jedis; public static void main(String[] args) {
// 连接本地的 Redis 服务
jedis = new Jedis("localhost");
System.out.println("连接成功");
// 获取数据并输出
Set<String> keys = jedis.keys("*");
Iterator<String> it = keys.iterator();
while (it.hasNext()) {
String key = it.next();
System.out.println(key);
}
}
}
输出后结果:
连接成功
hello
show
Java 使用 Redis存储系统的更多相关文章
- Redis学习笔记(一) ---- Linux系统中部署Redis存储系统
Redis 一.Redis简介 1.Redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合 ...
- 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 ...
- 360开源的类Redis存储系统:Pika
Pika 是 360 DBA 和基础架构组联合开发的类 Redis 存储系统,完全支持 Redis 协议,用户不需要修改任何代码,就可以将服务迁移至 Pika.有维护 Redis 经验的 DBA 维护 ...
- 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/ 工程
随机推荐
- Python SQLAlchemy多对多外键关联时表结构
# 创建多对多表结构 from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.engine import cre ...
- 剑指offer:反转链表
问题描述 输入一个链表,反转链表后,输出新链表的表头. c++代码 /* struct ListNode { int val; struct ListNode *next; ListNode(int ...
- VS的工作目录和输出目录
C+ +项目,解决方案总文件夹下就只包含解决方案配置文件sln和一个项目总文件夹和一个Debug文件夹以及一个Release文件夹(共四个东东,其中Debug和Release文件夹中存放最终生成的结果 ...
- useBean
Part.java package part; public class Part { String pName;//零件名字 String pColor;//零件颜色 int pQuantity;/ ...
- js改变数组的两个元素的位子,互换、置顶
//js数组的元素上移和下移动 var fieldData=[ {name:'id',value:'ID'} , {name:'username',value:'用户名'} , {name:'emai ...
- Map.putAll方法
import Java.util.HashMap; public class Map_putAllTest { public static void main(String[] args){ / ...
- visual studio常用技法相关
(1)查看dll里面包含了那些函数(dumpbin是visual studio内置工具)dumpbin -exports user32.lib (2)#include "stdlib.h&q ...
- 如何让写得html页面自动刷新
一:新建一个文件夹用vscode打开 二:终端输入npm init 然后一路回车会在文件夹中生成一个package.json文件 三:新建个html,在终端中输入cnpm install -g liv ...
- 规则引擎 drools
https://www.jianshu.com/p/725811f420db 深入了解Drools 简单介绍 笔者正在做风控系统,风控系统里边存在非常多的规则(比如:age < 16 || ag ...
- 别让持续交付自动化交付bug
你的连续交付能力用得还好吗,比如频繁发布移动或云应用的特性增强?还是恰好相反,快速发布了带漏洞的版本? - Joel Shore 连续交付能让交付流程跑得更快,但连续交付本身并不能为发布质量打包票.国 ...