ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

【Redis学习笔记】Redis Shell命令行、Redis API基础入门

2021-06-01 16:00:13  阅读:209  来源: 互联网

标签:Shell 元素 Redis System k2 API jedis println out


Redis安装不多说了,上个菜鸟教程,自己搞吧。

https://www.runoob.com/redis/redis-install.html

一,简单的Redis Shell命令行:

1.单个key存取

   set key value 

   get key

localhost:6379> set myName laohu
OK
localhost:6379> get myName
"laohu"

2.key是否存在 

   exists key

localhost:6379> exists myName
(integer) 1

3.删除key

   del key

localhost:6379> del myName
(integer) 1

4.查看key数据类型

   type key

localhost:6379> set obj hello
OK
localhost:6379> type obj
string

5.批量key设置与读取

   mset k1 v1 k2 v2 k3 v3...

   mget k1 k2 k3 ...

localhost:6379> mset k1 v1 k2 v2
OK
localhost:6379> mget k1 k2
1) "v1"
2) "v2"

 

 

只列简单的,复杂命令看这里:

 

https://www.cnblogs.com/tg666/p/11598437.html

 

二 .Redis API - Jedis 官方原生API

加入pom.xml依赖

        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>3.3.0</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.54</version>
        </dependency>

1.建测试类:

public class redisTest {
    public static void main(String[] args) {
        //创建对象,连接
        Jedis jedis = new Jedis("127.0.0.1", 6379);
        //连接测试
        System.out.println(jedis.ping());
    }
}

运行结果:

PONG

Process finished with exit code 0

 

2.常用方法:

public class redisTest2 {
    public static void main(String[] args) {
        //创建对象,连接
        Jedis jedis = new Jedis("127.0.0.1", 6379);
        System.out.println("清空当前数据库: "+jedis.flushDB());
        System.out.println("判断: "+jedis.exists("k1"));
        System.out.println("添加: "+jedis.set("k1", "v1"));
        System.out.println("添加: "+jedis.set("k2", "v2"));
        Set<String> keys = jedis.keys("*");
        System.out.println("列出所有key: "+keys);
        System.out.println("删除: "+jedis.del("k1"));
        System.out.println("判断: "+jedis.exists("k1"));
        System.out.println("查看键对应的值的类型: "+jedis.type("k2"));
        System.out.println("随机返回一个key: "+jedis.randomKey());
        System.out.println("重命名key: "+jedis.rename("k2", "k3"));
        System.out.println("获取元素: "+jedis.get("k3"));
        System.out.println("根据索引查询: "+jedis.select(0));
        System.out.println("清空当前数据库: "+jedis.flushDB());
        System.out.println("数据库key数量: "+jedis.dbSize());
        System.out.println("清空所有数据库的key: "+jedis.flushAll());
    }
}

运行结果:

清空当前数据库: OK
判断: false
添加: OK
添加: OK
列出所有key: [k1, k2]
删除: 1
判断: false
查看键对应的值的类型: string
随机返回一个key: k2
重命名key: OK
获取元素: v2
根据索引查询: OK
清空当前数据库: OK
数据库key数量: 0
清空所有数据库的key: OK

Process finished with exit code 0

3.操作String类型:

        System.out.println("添加元素");
        System.out.println(jedis.set("k1", "v1"));
        System.out.println(jedis.set("k2", "v2"));
        System.out.println(jedis.set("k3", "v3"));
        System.out.println("删除: "+jedis.del("k2"));
        System.out.println("取值: "+jedis.get("k2"));
        System.out.println("修改值: "+jedis.set("k1", "v11"));
        System.out.println("取值: "+jedis.get("k1"));
        System.out.println("追加值: "+jedis.append("k3", "end"));
        System.out.println("取值: "+jedis.get("k3"));
        System.out.println("添加多个元素: "+jedis.mset("k4","v4","k5","v5"));
        System.out.println("获取多个值: "+jedis.mget("k4","k5","k6"));
        System.out.println("删除多个元素: "+jedis.del("k4","k5"));
        System.out.println("获取多个值: "+jedis.mget("k3","k4","k5"));
        System.out.println("清空: "+jedis.flushDB());
        System.out.println("新增键值对,防止被覆盖");
        System.out.println("第一次赋值: "+jedis.setnx("k1", "v1"));
        System.out.println("第一次赋值: "+jedis.setnx("k2", "v2"));
        System.out.println("覆盖原值: "+jedis.setnx("k2", "v2new"));
        System.out.println("取值: "+jedis.get("k1"));
        System.out.println("取值: "+jedis.get("k2"));
        System.out.println("添加元素设置生命周期: "+jedis.setex("k3", 2, "v3"));
        System.out.println("取值: "+jedis.get("k3"));
        try {
            TimeUnit.SECONDS.sleep(3);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("过期后取值: "+jedis.get("k3"));
        System.out.println("获取原值,并更新: "+jedis.getSet("k2", "v2abc"));
        System.out.println("获取新的值: "+jedis.get("k2"));
        System.out.println("截取部分字符串: "+jedis.getrange("k2", 2, 4));

运行结果:

添加元素
OK
OK
OK
删除: 1
取值: null
修改值: OK
取值: v11
追加值: 5
取值: v3end
添加多个元素: OK
获取多个值: [v4, v5, null]
删除多个元素: 2
获取多个值: [v3end, null, null]
清空: OK
新增键值对,防止被覆盖
第一次赋值: 1
第一次赋值: 1
覆盖原值: 0
取值: v1
取值: v2
添加元素设置生命周期: OK
取值: v3
过期后取值: null
获取原值,并更新: v2
获取新的值: v2abc
截取部分字符串: abc

Process finished with exit code 0

4.操作List类型

        System.out.println("清空数据: "+jedis.flushDB());
        System.out.println("新增元素");
        System.out.println(jedis.lpush("list", "a","b","c","d"));
        System.out.println(jedis.lpush("list", "d"));
        System.out.println(jedis.lpush("list", "e"));
        System.out.println(jedis.lpush("list", "f"));
        System.out.println("查看所有: "+jedis.lrange("list", 0, -1));
        System.out.println("查看区间数据: "+jedis.lrange("list", 0, 3));
        System.out.println("删除列表中指定的值,第二参数为删除的个数(有重复时),后进先出原则,相当于出栈");
        System.out.println("删除指定值的元素: "+jedis.lrem("list", 2, "d"));
        System.out.println("查看所有: "+jedis.lrange("list", 0, -1));
        System.out.println("删除区间以外的元素: "+jedis.ltrim("list", 0, 3));
        System.out.println("查看所有: "+jedis.lrange("list", 0, -1));
        System.out.println("左侧弹出: "+jedis.lpop("list"));
        System.out.println("查看所有: "+jedis.lrange("list", 0, -1));
        System.out.println("右侧新增: "+jedis.rpush("list", "g"));
        System.out.println("查看所有: "+jedis.lrange("list", 0, -1));
        System.out.println("右侧弹出: "+jedis.rpop("list"));
        System.out.println("查看所有: "+jedis.lrange("list", 0, -1));
        System.out.println("修改指定下标元素: "+jedis.lset("list", 1, "new"));
        System.out.println("查看所有: "+jedis.lrange("list", 0, -1));
        System.out.println("队列长度: "+jedis.llen("list"));
        System.out.println("获取指定下标元素: "+jedis.lindex("list", 2));
        System.out.println("新增元素: "+jedis.lpush("list1", "4","2","0","6","5","8"));
        System.out.println("查看所有: "+jedis.lrange("list1", 0, -1));
        System.out.println("排序: "+jedis.sort("list1"));
        System.out.println("查看所有: "+jedis.lrange("list1", 0, -1));

运行结果:

清空数据: OK
新增元素
4
5
6
7
查看所有: [f, e, d, d, c, b, a]
查看区间数据: [f, e, d, d]
删除列表中指定的值,第二参数为删除的个数(有重复时),后进先出原则,相当于出栈
删除指定值的元素: 2
查看所有: [f, e, c, b, a]
删除区间以外的元素: OK
查看所有: [f, e, c, b]
左侧弹出: f
查看所有: [e, c, b]
右侧新增: 4
查看所有: [e, c, b, g]
右侧弹出: g
查看所有: [e, c, b]
修改指定下标元素: OK
查看所有: [e, new, b]
队列长度: 3
获取指定下标元素: b
新增元素: 6
查看所有: [8, 5, 6, 0, 2, 4]
排序: [0, 2, 4, 5, 6, 8]
查看所有: [8, 5, 6, 0, 2, 4]

5.操作Set

        jedis.flushDB();
        System.out.println("新增元素,不可重复");
        System.out.println(jedis.sadd("set1", "s0","s1","s2","s3","s4","s5","s7","s8"));
        System.out.println(jedis.sadd("set1", "s6"));
        System.out.println(jedis.sadd("set1", "s6"));
        System.out.println("列出所有元素: "+jedis.smembers("set1"));
        System.out.println("删除一个元素: "+jedis.srem("set1", "s0"));
        System.out.println("列出所有元素: "+jedis.smembers("set1"));
        System.out.println("删除元素: "+jedis.srem("set1", "s6","s7"));
        System.out.println("随机移除一个元素: "+jedis.spop("set1"));
        System.out.println("随机移除一个元素: "+jedis.spop("set1"));
        System.out.println("列出所有元素: "+jedis.smembers("set1"));
        System.out.println("查看元素个数: "+jedis.scard("set1"));
        System.out.println("判断是否存在某个元素: "+jedis.sismember("set1", "s3"));
        System.out.println("判断某个元素是否存在: "+jedis.sismember("set1", "s1"));
        System.out.println(jedis.sismember("set1", "s5"));
        System.out.println("================");
        System.out.println("新增: "+jedis.sadd("set2", "s0","s1","s2","s4","s5","s7","s8"));
        System.out.println("新增: "+jedis.sadd("set3", "s0","s1","s2","s4","s8"));
        System.out.println("set2中删除,并存到另一集合上 : "+jedis.smove("set2", "set3", "s1"));
        System.out.println("set2中删除,并存到另一集合上 : "+jedis.smove("set2", "set3", "s1"));
        System.out.println("删除元素并放在新集合中 :"+jedis.smove("set2", "set3", "s2"));
        System.out.println("列出所有元素: "+jedis.smembers("set2"));
        System.out.println("列出所有元素: "+jedis.smembers("set3"));
        System.out.println("交集: "+jedis.sinter("set2","set3"));
        System.out.println("并集: "+jedis.sunion("set2","set3"));
        System.out.println("差集: "+jedis.sdiff("set2","set3"));
        System.out.println("交集保存到集合中: "+jedis.sinterstore("set4", "set2","set3"));
        System.out.println("列出所有元素: "+jedis.smembers("set4"));

运行结果:

新增元素,不可重复
8
1
0
列出所有元素: [s8, s5, s4, s1, s6, s7, s3, s0, s2]
删除一个元素: 1
列出所有元素: [s8, s5, s4, s1, s6, s7, s3, s2]
删除元素: 2
随机移除一个元素: s2
随机移除一个元素: s8
列出所有元素: [s5, s4, s1, s3]
查看元素个数: 4
判断是否存在某个元素: true
判断某个元素是否存在: true
true
================
新增: 7
新增: 5
set2中删除,并存到另一集合上 : 1
set2中删除,并存到另一集合上 : 0
删除元素并放在新集合中 :1
列出所有元素: [s8, s5, s4, s7, s0]
列出所有元素: [s8, s4, s1, s0, s2]
交集: [s8, s4, s0]
并集: [s8, s1, s4, s5, s0, s7, s2]
差集: [s5, s7]
交集保存到集合中: 3
列出所有元素: [s8, s4, s0]

6.Hash类型:

        System.out.println("清空当前数据库");
        jedis.flushDB();
        Map<String,String> map = new HashMap();
        map.put("k1", "v1");
        map.put("k2", "v2");
        map.put("k3", "v3");
        map.put("k4", "v4");
        System.out.println("添加map集合");
        jedis.hmset("hash", map);
        System.out.println("添加元素: "+jedis.hset("hash", "k5","v5"));
        System.out.println("所有键值对: "+jedis.hgetAll("hash"));
        System.out.println("所有键: "+jedis.hkeys("hash"));
        System.out.println("所有值: "+jedis.hvals("hash"));
        System.out.println("给一个键保存整数,如果该键不存在则添加: "+jedis.hincrBy("hash", "k6", 6));
        System.out.println("所有键值对: "+jedis.hgetAll("hash"));
        System.out.println("添加或修改: "+jedis.hincrBy("hash", "k6", 60));
        System.out.println("所有键值对: "+jedis.hgetAll("hash"));
        System.out.println("删除一个或多个元素: "+jedis.hdel("hash", "k2"));
        System.out.println("所有元素: "+jedis.hgetAll("hash"));
        System.out.println("元素个数: "+jedis.hlen("hash"));
        System.out.println("判断元素是否存在: "+jedis.hexists("hash", "k2"));
        System.out.println("判断元素是否存在: "+jedis.hexists("hash", "k3"));
        System.out.println("根据键获取值: "+jedis.hmget("hash", "k3"));
        System.out.println("根据键获取值: "+jedis.hmget("hash", "k3","k4"));

运行结果:

清空当前数据库
添加map集合
添加元素: 1
所有键值对: {k3=v3, k4=v4, k5=v5, k1=v1, k2=v2}
所有键: [k3, k4, k5, k1, k2]
所有值: [v4, v3, v2, v1, v5]
给一个键保存整数,如果该键不存在则添加: 6
所有键值对: {k3=v3, k4=v4, k5=v5, k6=6, k1=v1, k2=v2}
添加或修改: 66
所有键值对: {k3=v3, k4=v4, k5=v5, k6=66, k1=v1, k2=v2}
删除一个或多个元素: 1
所有元素: {k3=v3, k4=v4, k5=v5, k6=66, k1=v1}
元素个数: 5
判断元素是否存在: false
判断元素是否存在: true
根据键获取值: [v3]
根据键获取值: [v3, v4]

7.Jedis 事务:

        JSONObject jsonObject = new JSONObject();
        jsonObject.put("hello", "world");
        jsonObject.put("hi", "Java");
        jedis.flushDB();
        System.out.println("开启事务");
        Transaction multi = jedis.multi();
        String result = jsonObject.toJSONString();
        try {
            multi.set("k1", result);
            multi.set("k2", result);
            // 模拟异常
            // int i = 1/0;
            multi.exec();//提交事务
        } catch (Exception e) {
            multi.discard();//回滚事务
            e.printStackTrace();
        } finally {
            System.out.println(jedis.get("k1"));
            System.out.println(jedis.get("k2"));
            jedis.close();//关闭连接
        }

运行结果:

开启事务
{"hi":"Java","hello":"world"}
{"hi":"Java","hello":"world"}

 

以上API部分案例引用下文,复杂的用法也可以参考以下文章:

https://blog.csdn.net/weixin_47257749/article/details/114044856

 

标签:Shell,元素,Redis,System,k2,API,jedis,println,out
来源: https://blog.csdn.net/foxofwind/article/details/117426168

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有