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游戏编程入门2
I/O.数据和字体:Trivia游戏 本章包括如下内容:Python数据类型获取用户输入处理异常Mad Lib游戏操作文本文件操作二进制文件Trivia游戏 其他的不说,我先去自己学习文件类型和字符串 ...
- Redis 错误:Failed with result 'start-limit-hit'
Redis 错误:Failed with result 'start-limit-hit' 背景 Redis 版本为 5.0.4: 文件 /etc/systemd/system/redis.servi ...
- bug日记之-------java.io.IOException: Server returned HTTP response code: 400 for URL
报的错误 出事代码 出事原因 解决方案 总结 多看源码, 我上面的实现方式并不好, 如果返回的响应编码为400以下却又不是200的情况下getErrorStream会返回null, 所以具体完美的解决 ...
- .NET Core到底有多强?
测试代码: C# Release 未优化 class Program { static long counter = 0; static void Main(string[] args) { for ...
- CI框架简单使用
CodeIgniter框架 1.回忆MVC 1.1.M:模型,提供数据,保存数据 1.2.V:视图,只负责显示,表单form 1.3.C:控制器,协调模型和视图 1.4.action:动作,是控制器中 ...
- CocoaPods 中删除不需要的第三方
1...打开Podfile 找到不需要的类库,直接删除 2...打开终端cd到当前项目的根目录下重新执行pod install --verbose --no-repo-update命令(更新一下) ...
- mysql 通过测试'for update',深入了解行锁、表锁、索引
mysql 通过测试'for update',深入了解行锁.表锁.索引 条件 FOR UPDATE 仅适用于InnoDB存储引擎,且必须在事务区块(BEGIN/COMMIT)中才能生效. mysql默 ...
- java 枚举使用教程
转载:https://blog.csdn.net/newbie_907486852/article/details/81027512 一.枚举型常量 首先枚举是一个特殊的class,这个class相当 ...
- NetBus —— 让你的 App 内部随处感知网络的变化
简介 NetBus 是一个实时监听网络状态的一个框架,接入简单.只需要几步就可以在 Activity 和 Fragment 以及其他要观测的类中很方便的收到网络状态变化的通知. 愿景 可以在 App ...
- selenium “could not be scrolled into view”
学习selenium对话框处理出现错误 a.py内容: from selenium import webdriver import timedriver = webdriver.Firefox()dr ...