1、redis基本数据结构之字符串
字符串是redis中最基本的数据结构,是key-value的形式存储数据。
字符串常用基本命令如下表所示:
命令 | 说明 | 备注 |
---|---|---|
set key value | 设置键值对 | 最常用的写入命令。 |
get key | 通过键获取value值 | 最常用的读取命令。 |
del key | 通过key删除键值对 | 删除命令,返回删除数,需要注意的是:它是一个通用的命令,也就是说在其他数据结构中也可以使用。 |
strlen key | 求key指向的字符串的长度 | 返回长度 |
getset key value | 修改原来key对应的value值,并将旧值返回 | 如果原来的值为空,则返回空,并设置新值 |
getrange key start end | 获取子串 | 记字符串长度为len,把字符串看成是一个数组,redis是以0开始计数的,因此start是从0开始,end是len-1。 |
append key value | 追加字符串到原来的字符串的末尾 | 返回key指向的新字符串的长度。 |
可以使用flushdb删除redis中的存储内容,但是一定要慎用。
演示如下图所示:
如果存储的字符串是数字(整数或浮点数),redis还支持简单的运算,如加减法。
如下表所示:
命令 | 说明 | 备注 |
---|---|---|
incr key | 在原字段上加1 | 只能对整数操作 |
incrby key increment | 在原字段上加上整数(increment) | 只能对整数操作 |
decr key | 在原字段上减1 | 只能对整数操作 |
decrby key increment | 在原字段上减去整数(increment) | 只能对整数操作 |
incrbyfloat key increment | 在原字段上加上浮点数(increment) | 可以操作浮点数或整数 |
演示如下:
2、redis基本数据结构之哈希
redis中哈希结构就如同java中map一样,一个对象里面有许多键值对,它是特别适合用来存储对象的,如果内存足够大,那么一个redis的哈希结构可以存储2的32次方-1个键值对(40多亿)。在redis中,hash是一个String类型的field和value的映射表。
映射表如下结构:
其中role_1代表的是这个hash结构在redis内存中的key,通过这个key就可以找到这个hash结构,而hash结构是由一系列的field和value组成的。
redis hash结构命令如下表所示:
命令 | 说明 | 备注 |
---|---|---|
hdel key field1 [field2 ....] | 删除hash结构中的某个(些)字段 | 可以进行多个字段的删除 |
hexists key field | 判断hash结构中是否存在field字段 | 存在返回1,否则返回0 |
hgetall key | 获取所有hash结构中的键值 | 返回键和值 |
hincr key field increment | 指定给hash结构中的某个字段加上一个整数 | 要求该字段是一个整数字符串 |
hincrbyfloat key field increment | 指定给hash结构中的某个字段加上一个浮点数 | 要求该字段是一个数字型字符串 |
hkeys key | 返回hash中所有的键 | |
hlen key | 返回hash中键值对的数量 | |
hmget key field1[field2...] | 返回hash中指定的键的值,可以是多个 | 依次返回值 |
hmset key field1 value1[field2 value2] | hash结构设置多个键值对 | |
hset key field value | 在hash结构中设置键值对 | 单个设置,m表示多个的意思 |
hsetnx key field value | 当hash结构中不存在对应的键才设置值 | |
hvals key | 返回hash结构中所有的值 |
可以看出redis中hash结构和字符串结构有着明显的不同,hash结构命令是以h开头的表示hash结构,另外大多数命令多了一个field域,这是hash结构的一个内部键,也就是说redis需要通过key索引找到对应的hash结构,然后在通过field来确定使用hash结构的那个键值对。
演示如下所示: