• Redis


    一、简介

    Jedis是Redis官网推荐的Java连接开发工具,使用Java操作Redis中间件。

    二、远程连接Redis

    ① 修改redis.conf配置文件

    [root@cyan ~]# vim redis.conf

    将绑定的ip: bind 127.0.0.1注释掉

    修改protected-mode属性为no

    接着:wq保存退出,然后使用这个conf文件重新启动redis

    ② 开放 6379 端口号

    firewall-cmd --query-port=6379/tcp  // 查看端口号是否已开启
    
    firewall-cmd --permanent --add-port=6379/tcp  // 开启6379端口号
    
    firewall-cmd --reload  // 重启防火墙

    三、测试连接

    ① 导入相关依赖

    <dependencies>
        <!--导入Jedis-->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>3.2.0</version>
        </dependency>
        <!--fastjson-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.62</version>
        </dependency>
    </dependencies>

    ② 编码测试

    • 连接数据库
    • 操作命令
    • 断开连接
    public class TestPing {
        public static void main(String[] args) {
            // 1、new Jedis对象,使用远程连接Redis
            Jedis jedis = new Jedis("111.230.195.169", 6379);
            // 2、ping,测试连接
            System.out.println(jedis.ping());
            // 3、断开连接
            jedis.close();
        }
    }

    输出:

    四、常用API

    ● RedisKey

    public class TestKey {
        public static void main(String[] args) {
    
            Jedis jedis = new Jedis("111.230.195.169", 6379);
    
            System.out.println("清空数据:" + jedis.flushDB());
            System.out.println("判断某个key-username是否存在:" + jedis.exists("username"));
            System.out.println("新增<'username','cyan'>键值对:" + jedis.set("username", "cyan"));
            System.out.println("新增<'password','12456'>键值对:" + jedis.set("password", "123456"));
            System.out.println("新增<'password','12456'>键值对:" + jedis.set("password", "123456"));
            System.out.println("系统中所有键如下:");
            Set<String> keys = jedis.keys("*");
            System.out.println(keys);
    
            System.out.println("删除键password:" + jedis.del("password"));
            System.out.println("判断键password是否存在:" + jedis.exists("password"));
            System.out.println("查看username所存储的值:" + jedis.type("username"));
            System.out.println("随机获取一个key:" + jedis.randomKey());
            System.out.println("重命名key:" + jedis.rename("username", "name"));
            System.out.println("获取改名后的key:" + jedis.get("name"));
            System.out.println("按索引查询:" + jedis.select(0));
            System.out.println("删除当前数据库中所有的key:" + jedis.flushDB());
            System.out.println("返回当前数据库中key的数目:" + jedis.dbSize());
            System.out.println("清空所有数据库:" + jedis.flushAll());
    
        }
    }
    View Code

    ● String

    public class TestString {
        public static void main(String[] args) {
            Jedis jedis = new Jedis("111.230.195.169", 6379);
    
            jedis.flushDB();
            System.out.println("===========================增加数据===========================");
            System.out.println(jedis.set("key1", "value1"));
            System.out.println(jedis.set("key2", "value2"));
            System.out.println(jedis.set("key3", "value3"));
            System.out.println("删除键key2:" + jedis.del("key2"));
            System.out.println("获取键key2:" + jedis.get("key2"));
            System.out.println("修改键key1:" + jedis.set("key1", "value1Change"));
            System.out.println("获取key1的值:" + jedis.get("key1"));
            System.out.println("在key3后面追加值::" + jedis.append("key3", "End"));
            System.out.println("key3的值:" + jedis.get("key3"));
            System.out.println("增加多个键值对:" + jedis.mset("key01", "value01", "key02", "value02", "key03", "value03", "key04", "value04"));
            System.out.println("获取多个键值对:" + jedis.mget("key1", "key2", "key3"));
            System.out.println("获取多个键值对:" + jedis.mget("key1", "key2", "key3", "key4"));
            System.out.println("删除多个键值对:" + jedis.del("key1", "key2"));
            System.out.println("获取多个键值对:" + jedis.mget("key1", "key2", "key3"));
    
            jedis.flushDB();
            System.out.println("===========================新增键值对防止覆盖原值===========================");
            System.out.println(jedis.setnx("key1", "value1"));
            System.out.println(jedis.setnx("key2", "value2"));
            System.out.println(jedis.setnx("key2", "value2-new"));
            System.out.println(jedis.get("key1"));
            System.out.println(jedis.get("key2"));
    
            System.out.println("===========================新增键值对并设置有效时间===========================");
            System.out.println(jedis.setex("key3", 2, "value3"));
            System.out.println(jedis.get("key3"));
            try {
                TimeUnit.SECONDS.sleep(3);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(jedis.get("key3"));
    
            System.out.println("================获取原值,更新为新值================");
            System.out.println(jedis.getSet("key2", "key2GetSet"));
            System.out.println(jedis.get("key2"));
    
            System.out.println("获取key2的值的子串:" + jedis.getrange("key2", 2, 4));
        }
    }
    View Code

    List、Set、Hash、Zset。所有的api命令,就是Linux的指令,一个都没有变化!

    ● 事务

    public class TestTX {
        public static void main(String[] args) {
    
            Jedis jedis = new Jedis("111.230.195.169", 6379);
    
            jedis.flushDB();
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("hello", "world");
            jsonObject.put("name", "kuangshen");
            // 开启事务
            Transaction multi = jedis.multi();
            String result = jsonObject.toJSONString();
    
            // jedis.watch(result) // 监控
            try {
                multi.set("user1", result);
                multi.set("user2", result);
                int i = 1 / 0; // 代码抛出异常事务,执行失败!
                multi.exec(); // 执行事务!
            } catch (Exception e) {
                multi.discard(); // 放弃事务
                e.printStackTrace();
            } finally {
                System.out.println(jedis.get("user1"));
                System.out.println(jedis.get("user2"));
                jedis.close(); // 关闭连接
            }
        }
    }
  • 相关阅读:
    课后作业
    使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数。请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象?”。
    课程作业·02
    课程作业01
    课程作业02 将课程中的所有动手动脑的问题以及课后实验性的问题,整理成一篇文档。
    课程作业01 模仿JavaAppArguments.java示例,编写一个程序,此程序从命令行接收多个数字,求和之后输出结果。
    《大道至简》第一章伪代码
    Vue2.0版英雄联盟助手,我的第一个小开源项目
    二级下拉菜单的三种实现方法——CSS 、JS、 jQuery
    关于清除浮动 and position的一些注意点
  • 原文地址:https://www.cnblogs.com/Dm920/p/12881637.html
Copyright © 2020-2023  润新知