zoukankan      html  css  js  c++  java
  • 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(); // 关闭连接
            }
        }
    }
  • 相关阅读:
    如何在同一窗口打开多个终端并实现快捷键切换
    Django基础八之cookie和session
    jQuery操作cookie
    Django基础九之中间件
    Django基础七之Ajax
    Mac下打开/usr/local目录
    Django基础二之URL路由系统
    json path espressions的语法学习
    如何查看bug属于前端还是后端
    python random生成随机手机号
  • 原文地址:https://www.cnblogs.com/Dm920/p/12881637.html
Copyright © 2011-2022 走看看