zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    php上传文件大小限制
    phpStudy for Linux (lnmp+lamp一键安装包)
    linux 常见问题
    Cmake设置环境变量
    NSIS Installer(被NSI脚本编译出来的target)获取命令行参数
    VS2010 Command Prompt Error:Cannot determine the location of the VS Common Tools folder
    关于老驱动不能在windows 8下正常安装的问题
    去除安装程序的窗口显示(类似于后台安装)
    NSIS操作系统环境变量
    NSIS检测操作系统x64还是x86的问题。
  • 原文地址:https://www.cnblogs.com/BulingBuling/p/8969202.html
Copyright © 2011-2022 走看看