redis中api理解与使用(一)

1、准备知识
1.1 全局命令:
命令解释
keys *查看所有键
dbsize查看键总数
exists key检查键是否存在
del key [key …]删除键
expire key seconds键过期(-1 未设置/-2 键不存在)
type key键的数据结构类型
1.2 数据结构与内部编码:

type命令实际返回的就是当前键的数据结构类型,分别为:string、hash、list、set、zset;
每种数据类型结构都有自己底层的内部编码实现,而且是多种实现,这样redis在合适场景选择合适的内部编码:

命令解释
object encoding key查看key对应值的编码类型

设计的好处:
1、改进内部的编码对外的数据结构和命令无影响;
2、多种内部编码实现可以在不同场景下发挥各自的优势;

1.3 单线程架构:

使用单线程架构和I/O多路复用模型

2、字符串(string)
2.1 常用命令:
命令解释
set key value [ex seconds] [px millis] [nx|xx]设值

set命令选项:
ex seconds:为键设值秒级过期时间
px millis:为键设值毫秒级过期时间
nx:键必须不存在才可添加成功,用于添加
xx:与nx相反,键必须存在才可设置成功,用于更新;

命令解释
get key获取值
mset key value [key value …]批量设值
mget key [key …]批量获取值
incr key计数

incr命令用于对值做自增操作,返回结果分三种情况:
(1)、值不是整数,返回错误;
(2)、值是整数,返回自增后的结果;
(3)、键不存在,按照值为0自增,返回结果为1;
除了incr命令,redis提供了decr、incrby、decrby、incrbyfloat等;
很多存储系统和编程语言内部使用CAS机制实现计数功能,会有一定cpu开销,但在redis中完全不存在这个问题

2.2 不常用命令:
命令解释
append key value追加值
strlen key字符串长度
getset key value设置并返回原值
setrange key offset value设置指定位置的字符
getrange key start end获取部分字符串
2.3 内部编码:

字符串类型的内部编码有三种:
(1)、int:8个字节的长整型;
(2)、embstr:大于等于39个字节的字符串;
(3)、大于39个字节的字符串;

3、哈希(hash)
3.1 常用命令:
命令解释
hset key field value设值
hget key field获取值
hdel key field删除field
hlen key计算field个数
hmset key field value [field value … ]批量设置field-value
hmget key field [field …]批量获取field-value
hexists key field判断field是否存在
hkeys key获取所有field
hvals key获取所有value
hgetall key获取所有的field-value
hincrby key field值自增
hincrbyfloat key field值自增
hstrlen key field计算value的字符串长度
3.2 内部编码:

哈希类型内部编码有两种:
1、ziplist(压缩列表):当哈希类型元素个数小于hash-max-ziplist-entries配置(默认512个)、同时所有值都小于has-max-ziplist-value配置(默认64字节)时,redis会使用ziplist作为哈希的内部实现,ziplist使用更加紧凑的结构实现多个元素的连续存储,故在节省内存方面比hashtable更加优秀;
2、hashtable(哈希表):当哈希类型无法满足ziplist的条件时,redis会使用hashtable作为哈希的内部实现,因为此时ziplist的读写效率会下降,而hashtable的读写时间复杂度为O(1);

(1)、当field个数较少且没有大的value时,内部编码为ziplist;
(2)、当有value大于64字节,内部编码会由ziplist变为hashtable;
(3)、当field个数超过512,内部编码也会有ziplist变为hashtable;

参考《redis开发与运维》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值