夫陶公
清风
千古,余又何人,敢称庶几
文章目录
介绍
字符串类型是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
未完待续,持续更新中...