Redis数据类型--字符串类型

夫陶公清风千古,余又何人,敢称庶几
在这里插入图片描述


介绍

字符串类型是Redis中最基本的数据类型,他能存储任何形式的字符串,包括二进制数据,一个字符串类型键允许存储的数据的最大容量是512MB。

一、基本命令

命令 解释
SET key value 设置字段值
GET key 获取字段值
INCR key 递增数字

1. 赋值与取值

赋值: SET key value
取值:GET key

127.0.0.1:6379> set name breez
OK
127.0.0.1:6379> get name
"breez"
127.0.0.1:6379> get other
(nil)
127.0.0.1:6379> 

:当键不存在时会返回空(nil)

实践:使用Java操作Redis数据库:SET
导入maven依赖:

<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>3.5.1</version>
</dependency>

@Test
    public void testSTRING(){
    
    
        Jedis jedis = new Jedis("127.0.0.1");
        String s = jedis.set("name", "清风");
        System.out.println("返回值:"+s);
        String name = jedis.get("name");
        System.out.println("name:"+name);
    }
返回值:OK
name:清风

2. 递增数字

INCR key

让当前键值递增,并返回递增后的值。

例:

127.0.0.1:6379> incr num
(integer) 1
127.0.0.1:6379> incr num
(integer) 2
127.0.0.1:6379> incr num
(integer) 3

如果键值不是整数时,会提示错误

127.0.0.1:6379> set n str
OK
127.0.0.1:6379> incr n
(error) ERR value is not an integer or out of range
127.0.0.1:6379> set n2 1
OK
127.0.0.1:6379> incr n2
(integer) 2
127.0.0.1:6379> incr n2
(integer) 3
127.0.0.1:6379> incr n2
(integer) 4
127.0.0.1:6379>       

从上可知n不是整数,而是一个字符串,n2是一个整数

实践:使用Java操作Redis数据库:INCR

 @Test
    public void testINCR(){
    
    
        Jedis jedis = new Jedis("127.0.0.1");
        Long num1 = jedis.incr("num");
        Long num2 = jedis.incr("num");
        Long num3 = jedis.incr("num");
        System.out.println("执行三次后的值:"+num3);
    }
执行三次后的值:3

二、命令进阶

命令 解释
INCRBY key increment 增加指定的整数
DECR key 减少整数
DECRBY key decrement 减少指定的整数
INCRBYFLOAT key increment 增加指定的浮点数
APPEND key value 向尾部追加值
STRLEN key 获取字符串长度
MGET key [key …] 同时设置多个键值
MSET key value [key value …] 同时获取多个键的值
GETBIT key offest 获取键指定的位号对应的二进制数(0或1)
SETBIT key offest value 设置键指定位号的二进制数(0或1)
BITCOUNT key [start][end] 统计指定字节范围
BITOP operation destkey key [key …] 对多个字符串类型键进行位运算

1. 增加指定的整数

INCRBY key increment

INCRBY 命令和INCR 命令一样,区别是前者可以通过increment参数指定一次增加的数值
例:

127.0.0.1:6379> incrby num 2
(integer) 2
127.0.0.1:6379> incrby num 2
(integer) 4
127.0.0.1:6379> incrby num 2
(integer) 6
127.0.0.1:6379>   

实践:使用Java操作Redis数据库:INCRBY

@Test
    public void testINCRBY(){
    
    
        Jedis jedis = new Jedis("127.0.0.1");
        jedis.incrBy("num",2);
        jedis.incrBy("num",2);
        Long num = jedis.incrBy("num", 2);
        System.out.println("执行三次后的结果:"+num);
    }
执行三次后的结果:6

2. 减少指定的整数

DECR key
DECR key increment

用法与INCR命令相同,只不过是让键值递减
例:

  • DECR
127.0.0.1:6379> set num 10
OK
127.0.0.1:6379> decr num
(integer) 9
127.0.0.1:6379> decr num
(integer) 8
127.0.0.1:6379> decr num
(integer) 7

实践:使用Java操作Redis数据库:DECR

@Test
    public void testDECR(){
    
    
        Jedis jedis = new Jedis("127.0.0.1");
        jedis.set("num","10");
        System.out.println("初始值:"+jedis.get("num"));
        jedis.decr("num");
        jedis.decr("num");
        Long num = jedis.decr("num");
        System.out.println("递减3次后的值:"+num);
    }
初始值:10
递减3次后的值:7
  • DECRBY
127.0.0.1:6379> set num 10
OK
127.0.0.1:6379> decrby num 3
(integer) 7
127.0.0.1:6379> decrby num 3
(integer) 4
127.0.0.1:6379> decrby num 3
(integer) 1
127.0.0.1:6379> decrby num 3
(integer) -2

实践:使用Java操作Redis数据库:DECRBY

@Test
    public void testDECRBY(){
    
    
        Jedis jedis = new Jedis("127.0.0.1");
        jedis.set("num","10");
        System.out.println("初始值:"+jedis.get("num"));
        jedis.decrBy("num",3);
        jedis.decrBy("num",3);
        Long num = jedis.decrBy("num", 3);
        System.out.println("递减3次后的值:"+num);
    }
初始值:10
递减3次后的值:1

3. 增加指定浮点数

INCRBYFLOAT key increment

递增一个双精度浮点数

127.0.0.1:6379> incrbyfloat num 2.6
"2.6"
127.0.0.1:6379> incrbyfloat num 2.6
"5.2"
127.0.0.1:6379> incrbyfloat num 2.6
"7.800000000000001"
127.0.0.1:6379> incrbyfloat num 2.6
"10.4"

实践:使用Java操作Redis数据库:INCRBYFLOAT

@Test
    public void testINCRBYFLOAT(){
    
    
        Jedis jedis = new Jedis("127.0.0.1");
        jedis.incrByFloat("num",2.6);
        jedis.incrByFloat("num",2.6);
        jedis.incrByFloat("num",2.6);
        Double num = jedis.incrByFloat("num", 2.6);
        System.out.println("递增4次后的结果:"+num);
    }
递增4次后的结果:10.4

4. 向尾部追加值

APPEND key value

该命令的作用是向一个键尾部追加值,如果该键不存在,则设置为默认值:value,相当于set key value,返回值是追加后字符串的总长度。
例:

127.0.0.1:6379> set key hello
OK
127.0.0.1:6379> append key world
(integer) 10
127.0.0.1:6379> get key
"helloworld"
127.0.0.1:6379> append key  "  breez"
(integer) 17
127.0.0.1:6379> get key
"helloworld  breez"

注意:如果需要添加空格,需要对字符串添加双引号

实践:使用Java操作Redis数据库:APPEND

@Test
    public void testAPPEND(){
    
    
        Jedis jedis = new Jedis("127.0.0.1");
        jedis.set("key","hello");
        System.out.println("追加前:"+jedis.get("key"));
        jedis.append("key","world");
        System.out.println("追加后:"+jedis.get("key"));
    }
追加前:hello
追加后:helloworld

5. 获取字符串长度

STRLEN key

STRLEN命令返回键的长度,如果键不存在则返回0.
例:

127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> strlen key
(integer) 0
127.0.0.1:6379> set key breez
OK
127.0.0.1:6379> strlen key
(integer) 5

实践:使用Java操作Redis数据库:STRLEN

@Test
    public void testSTRLEN(){
    
    
        Jedis jedis = new Jedis("127.0.0.1");
        Set<String> keys = jedis.keys("*");
        System.out.println("缓存中所有的键:");
        System.out.println(keys);
        jedis.set("key","breez");
        String key = jedis.get("key");
        Long strlen = jedis.strlen("key");
        System.out.println(key+"的长度为:"+strlen);
    }
缓存中所有的键:
[]
breez的长度为:5

6. 同时获得/设置多个键值

  • MGET

MGET key [ key …]

  • MSET

MSET key value [key value …]

注意:MGET/MSET 与GET/SET 相似,但是前者可以设置多个键的键值。

例:

127.0.0.1:6379> mset name breez age 22 sex male
OK
127.0.0.1:6379> keys *
1) "sex"
2) "name"
3) "age"
127.0.0.1:6379> mget name age sex
1) "breez"
2) "22"
3) "male"

实践:使用Java操作Redis数据库:MSETAndMGET

@Test
    public void testMSETAndMGET(){
    
    
        Jedis jedis = new Jedis("127.0.0.1");
        jedis.mset(new String[]{
    
    "name","breez","age","22","sex","male"});
        List<String> mget = jedis.mget(new String[]{
    
    "name","age","sex"});
        System.out.println(mget);
    }
[breez, 22, male]

7. 位操作

GETBIT key offset
SETBIT key offset value
BITCOUNT key [start][end]
BITOP operation destkey key [key …]


Redis中文官方网站:http://www.redis.cn


未完待续,持续更新中...

未完待续,持续更新中...

猜你喜欢

转载自blog.csdn.net/qq_43073558/article/details/113824058