Redis的API应用

全局命令

1,查看所有键:keys * set school dongnao set hello world

2,键总数 dbsize //2个键,如果存在大量键,线上禁止使用此指令

3,检查键是否存在:exists key //存在返回1,不存在返回0

4,删除键:del key //del hello school, 返回删除键个数,删除不存在键返回0

5,键过期:expire key seconds //set name test expire name 10 //10秒过期

ttl 查看剩余的过期时间

6,键的数据结构类型:type key //type hello //返回string,键不存在返回none

7,flushall 清空所有数据 flushdb 清空当前库数据,redis单机环境下有16个库(0-15)

单线程架构

列举例子:三个客户端同时执行命令

客户端1:set name test

客户端2:incr num

客户端3:incr num

执行过程:发送指令-〉执行命令-〉返回结果

执行命令:单线程执行,所有命令进入队列,按顺序执行,使用I/O多路复用解决I/O问题,后面有介绍(由于读写操作等待用户输入或输出都是阻塞的,所以 I/O 操作在一般情况下往往不能直接返回,这会导致某一文件的 I/O 阻塞导致整个进程无法对其它客户提供服务 ,IO多路复用模型是建立在内核提供的多路分离函数select基础之上的,使用select函数可以避免同步非阻塞IO模型中轮询等待的问题)

单线程快原因:纯内存访问, 非阻塞I/O(使用多路复用),单线程避免线程切换和竞争产生资源消耗

问题:如果某个命令执行,会造成其它命令的阻塞

字符串<String>

1,字符串类型:

实际上可以是字符串(包括XML JSON),还有数字(整形 浮点数),二进制(图片 音频 视频),最大不能超过512MB

2,设值命令:

set age 23 ex 10 //10秒后过期 px 10000 毫秒过期

setnx name test //不存在键name时,返回1设置成功;存在的话失败0

set age 25 xx //存在键age时,返回1成功

场景:如果有多客户同时执行setnx,只有一个能设置成功,可做分布式锁

3.获值命令:

get age //存在则返回value, 不存在返回nil

4.批量设值:

mset country china city beijing

5.批量获取:

mget country city address //返回china beigjin, address为nil

若没有mget命令,则要执行n次get命令

Redis的API应用

使用mget=1次网络请求+redis内部n次查询

Redis的API应用

6.计数:

incr age //必须为整数自加1,非整数返回错误,无age键从0自增返回1

decr age //整数age减1

incrby age 2 //整数age+2

decrby age 2//整数age -2

incrbyfloat score 1.1 //浮点型score+1.1

7.append追加指令:

set name hello; append name world //追加后成helloworld

8.字符串长度:

set hello “世界”;strlen hello//结果6,每个中文占3个字节

9.截取字符串:

set name helloworld ; getrange name 2 4//返回 llo

10.内部编码:

int: 8字节长整理//set age 100; object encoding age //返回int

embstr: 小于等于39字节串set name bejin; object encodeing name//embstr

raw: 大于39字节的字符串set a fsdfwerwerweffffffffffdfs//返回raw

Ps:

Flushall清除所有数据 flushdb 清库

redis 单点环境下有16个库 select 15 可以切换到第15个数据库 集群只有一个数据库0

应用场景

1.键值设计:

业务名:对象名:id:[属性],数据库为order, 用户表user,对应的键可为 order:user:1 或order:user:1:name

注意:

redis目前处于受保护模式,不允许非本地客户端链接,可以通过给redis设置密码,然后客户端链接的时候,写上密码就可以了

127.0.0.1:6379> config set requirepass 123456 临时生效

或者修改redis.conf requirepass 123456,启动时./redis-server redis.conf指定conf

./redis-cli -p 6379 -a 12345678 //需要加入密码才能访问

切换数据库:

select 2

相关推荐