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
原文地址:https://www.cnblogs.com/BulingBuling/p/8969202.html