栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Redis基本命令及Java API操作

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Redis基本命令及Java API操作

一、Redis基本命令 1.1、关于键(key)的操作

keys *:查看当前库所有key    (匹配:keys *1)
exists key:判断某个key是否存在
type key:查看你的key是什么类型
del key:删除指定的key数据
unlink key:根据value选择非阻塞删除(仅将keys从keyspace元数据中删除,真正的删除会在后续异步操作。)
expire key 10:10秒钟:为给定的key设置过期时间
ttl key:查看还有多少秒过期,-1表示永不过期,-2表示已过期

select:命令切换数据库
dbsize:查看当前数据库的key的数量
flushdb:清空当前库
flushall:通杀全部库

//给(key)name设置值
127.0.0.1:6379> set name lucy 
OK
127.0.0.1:6379> set age 10
OK
//查看所有键(key)
127.0.0.1:6379> keys *
1) "age"
2) "name"
//查看key的类型
127.0.0.1:6379> type age
string
127.0.0.1:6379> type name
string
//判断key是否存在
127.0.0.1:6379> exists age
(integer) 1
127.0.0.1:6379> exists username
(integer) 0
//删除指定的键
127.0.0.1:6379> del age
(integer) 1
127.0.0.1:6379> keys *
1) "name"
//给指定key设置过期时间
127.0.0.1:6379> expire name 10
(integer) 1
//查看指定key过期时间
127.0.0.1:6379> ttl name
(integer) 4
127.0.0.1:6379> ttl name
(integer) -2
127.0.0.1:6379> ttl name
(integer) -2
127.0.0.1:6379> set sex 0
OK
//查看当前数据库key的数量
127.0.0.1:6379> dbsize
(integer) 1
//切换下标为1的数据库,(数据库的下标从0开始)
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> set name cat
OK
//切换下标为0的数据库
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> set age 10
OK
//清空所有数据库的数据
127.0.0.1:6379> flushall
OK
//以下命令验证是否清空成功
127.0.0.1:6379> dbsize
(integer) 0
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> dbsize
(integer) 0
127.0.0.1:6379[1]> select 0
OK
1.2、String类型常用命令

set :添加键值对

get  :查询对应键值

append :将给定的 追加到原值的末尾

strlen :获得值的长度

setnx :只有在 key 不存在时  设置 key 的值

incr :将 key 中储存的数字值增1,只能对数字值操作,如果为空,新增值为1

decr :将 key 中储存的数字值减1,只能对数字值操作,如果为空,新增值为-1

incrby / decrby <步长>:将 key 中储存的数字值增减。自定义步长。

getrange <起始位置> <结束位置>:获得值的范围,类似java中的substring,(前包,后包)

setrange <起始位置> :用 覆写所储存的字符串值,从<起始位置>开始(**索引从0开始)。

setex <过期时间> :设置键值的同时,设置过期时间,单位秒。

getset :以新换旧,设置了新值同时获得旧值

//添加键值对
127.0.0.1:6379> set k1 v1
OK
//获取对应键的值
127.0.0.1:6379> get k1
"v1"
//在当前键的值后面加上abc
127.0.0.1:6379> append k1 abc
(integer) 5
//获取键的值查看abc是否加入成功
127.0.0.1:6379> get k1
"v1abc"
//查看当前键的长度
127.0.0.1:6379> strlen k1
(integer) 5
//在当前键不存在情况下,添加键值对,这里键k1存在,所以添加失败
127.0.0.1:6379> setnx k1 a
(integer) 0
//这里键k2不存在,所以添加成功
127.0.0.1:6379> setnx k2 1
(integer) 1
//对指定键的值自增1
127.0.0.1:6379> incr k2
(integer) 2
127.0.0.1:6379> get k2
"2"
//对指定键的值自减1
127.0.0.1:6379> decr k2
(integer) 1
127.0.0.1:6379> get k2
"1"
//对键k2增加步长为10的数
127.0.0.1:6379> incrby k2 10
(integer) 11
127.0.0.1:6379> get k2
"11"
//获取键k1对应下标内的值(包前包后)
127.0.0.1:6379> getrange k1 0 1
"v1"
//将na覆盖掉键k1起始下标为0的值
127.0.0.1:6379> setrange k1 0 na
(integer) 5
127.0.0.1:6379> get k1
"naabc"
//添加键值对k3,并设置过期时间,单位为秒
127.0.0.1:6379> setex k3 2 v3
OK
//2秒后查看键发现已过期
127.0.0.1:6379> get k3
(nil)
//给键k2设置新值100并返回旧值11
127.0.0.1:6379> getset k2 100
"11"
127.0.0.1:6379> get k2
"100"
 1.3、list类型常用命令

lpush/rpush .... :从左边/右边插入一个或多个值。

lpop/rpop [count]:从左边/右边弹出一个值(值会被删除),count表示设置弹出值的个数(可选)。(当键对应的值被全部弹出,键也会被删除)

rpoplpush :从列表右边弹出一个值,插到列表左边。

lrange :按照索引下标获得元素(从左到右)(0到-1表示获取所有)

lindex :按照索引下标获得元素(从左到右)(值不会被删除)

llen :获得列表长度 

linsert before :从的前面插入插入值,(这里的before也可改成after,表示从后面插入)

lrem :从左边删除n个value(从左到右)

lset :将列表key下标为index的值替换成value

//从左添加列表值
127.0.0.1:6379> lpush k1 v1 v2 v3
(integer) 3
//从左往右获取列表k1的值
127.0.0.1:6379> lrange k1 0 -1
1) "v3"
2) "v2"
3) "v1"
//从左弹出k1的一个值(值会被删除)
127.0.0.1:6379> lpop k1 
"v3"
127.0.0.1:6379> lpush k2 redis java mysql
(integer) 3
//从右弹出k1的一个值然后从左插入到k2中
127.0.0.1:6379> rpoplpush k1 k2
"v1"
//验证上一个操作弹出成功
127.0.0.1:6379> lrange k1 0 -1
1) "v2"
//验证上一个操作插入成功
127.0.0.1:6379> lrange k2 0 -1
1) "v1"
2) "mysql"
3) "java"
4) "redis"
//获取k2下标为0的值
127.0.0.1:6379> lindex k2 0
"v1"
127.0.0.1:6379> lrange k2 0 -1
1) "v1"
2) "mysql"
3) "java"
4) "redis"
//获取k2的长度
127.0.0.1:6379> llen k2
(integer) 4
//从k1的值v2前面插入abc
127.0.0.1:6379> linsert k1 before v2 abc
(integer) 2
//验证上一个操作是否成功
127.0.0.1:6379> lrange k1 0 -1
1) "abc"
2) "v2"
//从k2的左边删除1个值为mysql的元素
127.0.0.1:6379> lrem k2 1 mysql
(integer) 1
//查看是否操作成功
127.0.0.1:6379> lrange k2 0 -1
1) "v1"
2) "java"
3) "redis"
//将列表k2下标为0的值替换成mysql
127.0.0.1:6379> lset k2 0 mysql
OK
//查看是否操作成功
127.0.0.1:6379> lrange k2 0 -1
1) "mysql"
2) "java"
3) "redis"
1.4、set类型常用命令 

sadd ..... :将一个或多个 member 元素加入到集合 key 中,已经存在的 member 元素将被忽略

smembers :取出该集合的所有值。

sismember :判断集合是否为含有该值,有1,没有0

scard:返回该集合的元素个数

srem .... :删除集合中的某个元素。

spop :随机从该集合中弹出一个值。(值会被删除)

srandmember :随机从该集合中取出n个值。不会从集合中删除 。

smove value:把集合中一个值从一个集合移动到另一个集合

sinter :返回两个集合的交集元素。

sunion :返回两个集合的并集元素。

sdiff :返回两个集合的差集元素(key1中的,不包含key2中的)

//添加set类型的键值对
127.0.0.1:6379> sadd k1 v1 v2 v3
(integer) 3
//取出集合k1的所有值
127.0.0.1:6379> smembers k1
1) "v1"
2) "v2"
3) "v3"
//判断集合k1中是否存在值v4
127.0.0.1:6379> sismember k1 v4
(integer) 0
//查看集合k1的长度
127.0.0.1:6379> scard k1
(integer) 3
//删除集合k1中的元素v3
127.0.0.1:6379> srem k1 v3
(integer) 1
//随机从集合k1中弹出一个值。
127.0.0.1:6379> spop k1
"v2"
//验证弹出的值会被删除
127.0.0.1:6379> smembers k1
1) "v1"
//随机集合k1中取出1个值
127.0.0.1:6379> srandmember k1 1
1) "v1"
//验证取出的值不会被删除
127.0.0.1:6379> smembers k1
1) "v1"
127.0.0.1:6379> sadd k2 a b c
(integer) 3
//从集合k2中移出元素a并添加到k1中
127.0.0.1:6379> smove k2 k1 a
(integer) 1
//验证是否添加成功
127.0.0.1:6379> smembers k1
1) "a"
2) "v1"
//验证是否移出成功
127.0.0.1:6379> smembers k2
1) "c"
2) "b"
//返回两个集合的交集元素
127.0.0.1:6379> sinter k1 k2
(empty array)
//返回两个集合的并集元素
127.0.0.1:6379> sunion k1 k2
1) "c"
2) "a"
3) "v1"
4) "b"
//返回两个集合的差集元素(key1中不包含key2中的元素)
127.0.0.1:6379> sdiff k1 k2
1) "a"
2) "v1"
1.5、hash常用命令 

hset :给集合中的  键赋值

hget :从集合取出 value 

hmset ... :批量设置hash的值

hexists :查看哈希表 key 中,给定域 field 是否存在。 

hkeys :列出该hash集合的所有field

hvals :列出该hash集合的所有value

hincrby :为哈希表 key 中的域 field 的值加上增量 1   -1

hsetnx :将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在时有效

//给k1中的name属性赋值
127.0.0.1:6379> hset k1 name lisi
(integer) 1
//获取k1中的name属性值
127.0.0.1:6379> hget k1 name
"lisi"
//批量添加k1中的属性和值
127.0.0.1:6379> hmset k1 age 10 sex 0
OK
//判断k1中是否存在属性name
127.0.0.1:6379> hexists k1 name
(integer) 1
//查看k1中的所有属性
127.0.0.1:6379> hkeys k1
1) "name"
2) "age"
3) "sex"
//查看k1中的所有属性的值
127.0.0.1:6379> hvals k1
1) "lisi"
2) "10"
3) "0"
//为k1中的属性age的值加上增量2
127.0.0.1:6379> hincrby k1 age 2
(integer) 12
//查看结果
127.0.0.1:6379> hget k1 age
"12"
//将k1中的属性name的值设置为lusy,因为属性name存在,所以设置失败时有效
127.0.0.1:6379> hsetnx k1 name lusy
(integer) 0
//将k1中的属性phone的值设置为123,因为属性phone不存在,所以设置成功
127.0.0.1:6379> hsetnx k1 phone 123
(integer) 1
1.6、zset常用命令

zadd   …:将一个或多个 member 元素及score 值加入到有序集 key 当中。

zrange  [WITHSCORES] :返回有序集 key 中,下标在之间的元素,带WITHSCORES,可以让分数一起和值返回到结果集。

zrange key min max byscore [withscores] [limit offset count]:返回有序集 key 中,所有 score 值介于 min 和 max 之间    (包括等于 min 或 max )的成员。(不加byscore,min与max表示下标),有序集成员按 score 值递增(从小到大)次序排列。 

zrevrange key max min [withscores] [limit offset count] :同上,改为从大到小列。 

zincrby :为元素的score加上增量

zrem   :删除该集合下,指定值的元素 

zcount :统计该集合,分数区间内的元素个数 

zrank :返回该值在集合中的排名,从0开始。(从小到大)

//将一个或多个元素及其score值加入到有序集k1当中。
127.0.0.1:6379> zadd k1 500 v1 100 v2 300 v3
(integer) 3
//返回有序集k1中,下标在0 -1之间的元素并且带分数带
127.0.0.1:6379> zrange k1 0 -1 withscores
1) "v2"
2) "100"
3) "v3"
4) "300"
5) "v1"
6) "500"
//返回k1中分数在200到600之间的元素与分数并从小到大排列
127.0.0.1:6379> zrange k1 200 600 byscore withscores
1) "v3"
2) "300"
3) "v1"
4) "500"
//返回k1中下标在0到2之间的元素与分数并从大到小排列
127.0.0.1:6379> zrevrange k1 0 2 withscores
1) "v1"
2) "500"
3) "v3"
4) "300"
5) "v2"
6) "100"
//将k1中元素为v1的分数加上100
127.0.0.1:6379> zincrby k1 100 v1
"600"
//删除k1中的元素v3
127.0.0.1:6379> zrem k1 v3
(integer) 1
//统计k1中分数从100到500的元素
127.0.0.1:6379> zcount k1 100 500
(integer) 1
//返回元素v2在k1中的排名(从小到大)
127.0.0.1:6379> zrank k1 v2
(integer) 0
//返回元素v1在k1中的排名(从小到大)
127.0.0.1:6379> zrank k1 v1
(integer) 1
二、常用API操作 2.1、准备

在redis.conf中注释掉bind 127.0.0.1,然后将protected-mode yes中的yes改成no,再关闭掉Linux的防火墙,否则其他设备将无法连接到Linux中的redis

1.使用vi编辑器打开redis.conf

2.命令模式使用:/bind命令找到bind 127.0.0.1,使用i进入编辑模式注释掉

3.用同样的方法找到protected-mode yes,将yes改成no

4.使用esc退出编辑模式,使用:wq命令保存并退出

5.执行systemctl stop firewalld命令关闭防火墙

6.重启redis

当前状态表示防火墙已关闭

2.2、测试

Jedis对象包含了所有Redis的命令操作,所以可以用Jedis对象操作Redis

2.2.1、导入依赖

    redis.clients
    jedis
    3.3.0
2.2.2、测试API操作
public class Demo1 {

    public static void main(String[] args) {
        //创建Jedis对象
        //192.168.117.131:Linux的ip地址,redis是在Linux上启动的
        //6379:redis端口号
        Jedis jedis = new Jedis("192.168.117.131",6379);
        //测试是否连接成功
        String pong = jedis.ping();
        System.out.println("连接成功:" + pong);

        System.out.println("==============key==============");

        
        jedis.set("k1","v1");
        jedis.set("k2","v2");
        jedis.set("k3","v3");

        Set keys = jedis.keys("*");
        for (String key : keys) {
            System.out.println(key);
        }

        //查看是否存在当前key
        System.out.println(jedis.exists("k1"));
        //查看key的过期时间
        System.out.println(jedis.ttl("k1"));
        //获取key的值
        System.out.println(jedis.get("k1"));

        System.out.println("==============String==============");

        
        //存储多个字符串类型的键值对
        jedis.mset("str1","v1","str2","v2","str3","v3");
        //获取多个key的值
        System.out.println(jedis.mget("str1","str2","str3"));

        System.out.println("==============list==============");

        
        jedis.lpush("mylist","l1","l2","l3");
        List mylist = jedis.lrange("mylist", 0, -1);
        for (String s : mylist) {
            System.out.println(s);
        }

        System.out.println("==============set==============");

        
        jedis.sadd("orders","order01","order02","order03");
        Set orders = jedis.smembers("orders");
        for (String order : orders) {
            System.out.println(order);
        }

        System.out.println("==============hash==============");

        
        jedis.hset("hash1","username","lisi");
        System.out.println(jedis.hget("hash1","username"));
        Map map = new HashMap();
        map.put("phone","10000000000");
        map.put("age","20");
        map.put("email","abc@123.com");
        //添加map
        jedis.hmset("hash2", map);
        List result = jedis.hmget("hash2", "phone", "age", "email");
        for (String s : result) {
            System.out.println(s);
        }

        System.out.println("==============zset==============");

        
        jedis.zadd("zset01",100d,"z3");
        jedis.zadd("zset01",90d,"l4");
        jedis.zadd("zset01",80d,"w5");
        jedis.zadd("zset01",70d,"z6");

        Set zset01 = jedis.zrange("zset01", 0, -1);
        for (String s : zset01) {
            System.out.println(s);
        }

    }
}
2.2.3、结果
连接成功:PONG
==============key==============
k3
k1
k2
true
-1
v1
==============String==============
[v1, v2, v3]
==============list==============
l3
l2
l1
==============set==============
order01
order03
order02
==============hash==============
lisi
10000000000
20
abc@123.com
==============zset==============
z6
w5
l4
z3

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/292453.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号