Redis02 使用Redis数据库(String类型)全面解析

Redis02深入探讨了String类型的Redis数据库,全面解析其特性、应用场景及在.NET环境下的客户端使用。

深入解析Redis数据库之String类型:全面掌握其应用与实现

Redis与String类型简介

Redis是一个开源的、高性能的、基于键值对的缓存与存储系统,支持多种类型的数据结构,如String、List、Set、Zset、Hash等,String类型是最基本的数据类型,广泛应用于各种场景,本文将全面解析Redis中String类型的使用方法、实现原理以及相关操作。

Redis02 使用Redis数据库(String类型)全面解析

String类型的使用方法

1、设置和获取键值对

设置键值对:

SET key value

获取键值对:

GET key

示例:

127、0.0.1:6379> SET name zhangsan
OK
127、0.0.1:6379> GET name
"zhangsan"

2、批量设置和获取键值对

批量设置键值对:

MSET key1 value1 key2 value2 ...

批量获取键值对:

MGET key1 key2 ...

示例:

127、0.0.1:6379> MSET age 18 gender male
OK
127、0.0.1:6379> MGET age gender
1) "18"
2) "male"

3、设置键值对并设置过期时间

SET key value EX seconds
SET key value PX milliseconds

示例:

127、0.0.1:6379> SET name lisi EX 10
OK
127、0.0.1:6379> GET name
"lisi"
127、0.0.1:6379> GET name
(nil)  # 10秒后,键值对已过期

4、追加值

Redis02 使用Redis数据库(String类型)全面解析

APPEND key value

示例:

127、0.0.1:6379> SET name zhangsan
OK
127、0.0.1:6379> APPEND name append
(integer) 13
127、0.0.1:6379> GET name
"zhangsanappend"

5、获取字符串长度

STRLEN key

示例:

127、0.0.1:6379> SET name zhangsan
OK
127、0.0.1:6379> STRLEN name
(integer) 8

6、数字类型的操作

Redis的String类型不仅可以存储字符串,还可以存储数字类型(整数和浮点数),以下是一些数字类型的操作:

– 设置数字:

SET key number

– 获取数字:

GET key

– 数字增加:

INCR key
INCRBY key increment
INCRBYFLOAT key increment

– 数字减少:

DECR key
DECRBY key decrement

示例:

127、0.0.1:6379> SET age 30
OK
127、0.0.1:6379> INCR age
(integer) 31
127、0.0.1:6379> INCRBY age 5
(integer) 36
127、0.0.1:6379> INCRBYFLOAT age 1.5
"37.5"
127、0.0.1:6379> DECR age
(integer) 36
127、0.0.1:6379> DECRBY age 5
(integer) 31

String类型实现原理

Redis中String类型的实现基于SDS(Simple Dynamic String)结构,SDS结构如下:

Redis02 使用Redis数据库(String类型)全面解析

struct sdshdr {
    int len;    // 字符串长度
    int free;   // 剩余空间
    char buf[]; // 实际存储字符串的数组
};

SDS结构相较于传统的C语言字符串有以下优势:

1、获取字符串长度的时间复杂度从O(n)降低到O(1);

2、杜绝缓冲区溢出,通过预分配空间和惰性释放空间策略,减少内存分配次数;

3、支持存储二进制数据,不需要考虑字符串结束符’