02.Redis常用的类型(一)

redis安装请移步至 01.linux下安装redis并做成服务

常用类型有字符串(strings),散列(hashes),列表(lists),集合(sets),有序集合(sorted sets)与范围查询,bitmaps。

String

String这个类型中包括字符类型、数值类型、bitmaps。

字符类型

因为Redis是二进制安全的,值取字节流,在字符类型这还是有点特殊的。先连接redis。

[root@basic ~]# redis-cli 
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> set k2 中文
OK
127.0.0.1:6379> type k1
string
127.0.0.1:6379> type k2
string
127.0.0.1:6379> OBJECT encoding k1
"embstr"
127.0.0.1:6379> OBJECT encoding k2
"embstr"
127.0.0.1:6379> 

在这里使用type和OBJECT encoding查看value的类型都为string。

将SecureCRT的字符集由UTF-8改成GBK。
UTF-8

退出客户端再次连接

[root@basic ~]# redis-cli 
127.0.0.1:6379> OBJECT encoding k1
"embstr"
127.0.0.1:6379> OBJECT encoding k2
"embstr"
127.0.0.1:6379> APPEND k2 测试
(integer) 10
127.0.0.1:6379> OBJECT encoding k2
"raw"
127.0.0.1:6379> get k2
"\xe4\xb8\xad\xe6\x96\x87\xb2\xe2\xca\xd4"
127.0.0.1:6379> 

由于两次操作字符集不同,OBJECT encoding 的类型变成了raw,get的值也看不到存入的值了。

退出客户端,以raw的形式连接

[root@basic ~]# redis-cli --raw
127.0.0.1:6379> get k2
涓枃测试
127.0.0.1:6379> 

因为“测试”是以GBK编码的形式append到k2中的,所以在–raw模式下,Redis会尽力的将value以当前的字符集格式解码。
我们在退出,将SecureCRT的字符集由GBK改回UTF-8,再以默认的方式连接。

[root@basic ~]# redis-cli 
127.0.0.1:6379> get k2
"\xe4\xb8\xad\xe6\x96\x87\xb2\xe2\xca\xd4"
127.0.0.1:6379> 

由此可见,redis与外界交互的时候只取字节流,防止编码不一致,编码不影响数据的存储,客户端和服务端需要约定好编码规则即可。

数值类型

数值类型API操作成功后,会在内部将value变成int类型,方便下次计算,这里也用到了类型校验,如果类型不匹配,会直接报错,不会继续操作。

127.0.0.1:6379> set k1 1
OK
127.0.0.1:6379> APPEND k1 3
(integer) 2
127.0.0.1:6379> get k1
"13"
127.0.0.1:6379> INCR k1
(integer) 14
127.0.0.1:6379> APPEND k1 3
(integer) 3
127.0.0.1:6379> get k1
"143"
127.0.0.1:6379> type k1
string
127.0.0.1:6379> OBJECT encoding k1
"raw"
127.0.0.1:6379> incr k1 
(integer) 144
127.0.0.1:6379> type k1
string
127.0.0.1:6379> OBJECT encoding k1
"int"
127.0.0.1:6379> 

常用api包括,自增(INCR),自减(DECR)等操作。

bitmaps

setbit可以直接操作二进制码,效率非常高。

从左往右数第1个位置设置成1。

get key的时候回直接返回ACSII码对应的值。

STRLEN key的时候,会返回字节长度,不是位数,8位为一个长度。

127.0.0.1:6379> setbit k1 1 1
(integer) 0
127.0.0.1:6379> get k1
"@"
127.0.0.1:6379> setbit k1 7 1
(integer) 0
127.0.0.1:6379> get k1
"A"
127.0.0.1:6379> STRLEN k1
(integer) 1
127.0.0.1:6379> 

BITPOS根据范围查找第一个bit所在的位置,返回的位置是全量的bit的位置,范围是字节位置的范围。

127.0.0.1:6379> BITPOS k1 1 0 1
(integer) 1
127.0.0.1:6379> 

bitcount根据范围只计算1查询次数,范围也是字节范围。

127.0.0.1:6379> BITCOUNT k1 0 1
(integer) 2
127.0.0.1:6379> BITCOUNT k1 0 0
(integer) 2
127.0.0.1:6379> 

bitop可以操作二进制的或与非计算

&

bitop and andkey  k1  k2

|

bitop or orkey k1 k2

!

bitop not notkey k1 k2

andkey、orkey、notkey代表结果存入的key。

03.Redis常用的类型(二)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

起个破名真费劲..

可赏可不赏,没脸要,哈哈

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值