redis使用-string类型

1.基本命令

redis-cli //启动客户端,默认启动端口为6379
exit //退出
redis-cli -h //查看帮助
redis-cli -h 主机ip //连接到具体某一个主机
redis-cli -p 端口号 //连接到具体端口号
redis-cli -a 密码 //输入验证密码
redis-cli -n <数据库number > //连接数据库 0.1…15

redis默认16个库

[root@localhost ~]# redis-cli -p 6380
127.0.0.1:6380> set k380:1 hello //默认数据进入0号库
OK
127.0.0.1:6380> get k380:1
“hello”
127.0.0.1:6380> select 8 //选择8号库
OK
127.0.0.1:6380[8]> get k380:1
(nil)
127.0.0.1:6380[8]> exit
[root@localhost ~]# redis-cli -p 6380 -n 8 //连接时指定8号库
127.0.0.1:6380[8]> exit

redis学会使用帮助

[root@localhost ~]# redis-cli
127.0.0.1:6379> help
redis-cli 6.2.1
To get help about Redis commands type:
“help @” to get a list of commands in
"help " for help on
"help " to get a list of possible help topics
“quit” to exit
To set redis-cli preferences:
“:set hints” enable online hints
“:set nohints” disable online hints
Set your preferences in ~/.redisclirc

127.0.0.1:6380>keys * //显示建过的key
127.0.0.1:6380> FLUSHDB //清库

#2.数据类型String
##2.1 字符串命令

127.0.0.1:6380>set k1 hello nx //k1不存在时设置为hello 可以用做分布式锁
127.0.0.1:6380>sek k1 hello xx //k1存在时更新为hello
127.0.0.1:6380> mset k1 1 k2 2 //同时设置多个健值对
OK
127.0.0.1:6380> get k1
“1”
127.0.0.1:6380> get k2
“2”
127.0.0.1:6380> mget k1 k2 //同时获取多个健值对

append 追加命令

127.0.0.1:6380>get k1
“1”
127.0.0.1:6380>append k1 " world" //追加字符
(integer) 7
127.0.0.1:6380>get k1
“1 world”

GETRANGE 截取字符串

127.0.0.1:6380>GETRANGE k1 5 7 //截取字符
“ld”

正反向索引:每一个字符既有正向索引又有反向索引
GETRANGE 获取某一区间字符串

127.0.0.1:6380>GETRANGE k1 5 -1 //获取下标从5到最后的字符
“ld”
127.0.0.1:6380>GETRANGE k1 0 -1 //获取从0到-1 是所有字符
“1 world”

127.0.0.1:6380> get k1
“1 world”
127.0.0.1:6380>SETRANGE k1 5 mashibing //从下标5开始替换
127.0.0.1:6380> get k1
“1 wormashibing”

STRLEN命令 查看字符串长度

127.0.0.1:6380> get k1
“1 wormashibing”
127.0.0.1:6380> STRLEN k1
(integer) 14

type命令 查看value类型

127.0.0.1:6380> type k1 //看 value的类型
string
127.0.0.1:6380> help set //set命令的group是string 所以value是string类型
SET key value [EX seconds|PX milliseconds|EXAT timestamp|PXAT milliseconds-timestamp|KEEPTTL] [NX|XX] [GET]
summary: Set the string value of a key
since: 1.0.0
group: string
127.0.0.1:6380> set k1 99
OK
127.0.0.1:6380> type k1
string

object命令
encoding类型有三种: embstr integer raw

127.0.0.1:6380> object help //查看object使用帮助
127.0.0.1:6380> set k1 99
OK
127.0.0.1:6380> set k2 hello
OK
127.0.0.1:6380> OBJECT encoding k2
“embstr”
127.0.0.1:6380> OBJECT encoding k1
“int”
127.0.0.1:6380> set k39 jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj
OK
127.0.0.1:6380> OBJECT encoding k39
“embstr”
127.0.0.1:6380> append k39 jjjjj
(integer) 45
127.0.0.1:6380> OBJECT encoding k39
“raw”

encoding类型
二进制安全:redis进程与外界交互时,获取的是字节数组,即从socket中拿到的是字节流。原因:有统一编解码数据不会被破坏。

127.0.0.1:6380> set k1 hello
OK
127.0.0.1:6380> strlen k1
(integer) 5
127.0.0.1:6380> set k2 9
OK
127.0.0.1:6380> OBJECT encoding k2
“int”
127.0.0.1:6380> strlen k2
(integer) 1
127.0.0.1:6380> append k2 999
(integer) 4
127.0.0.1:6380> get k2
“9999”
127.0.0.1:6380> object encoding k2
“raw”
127.0.0.1:6380> incr k2
(integer) 10000
127.0.0.1:6380> object encoding k2
“int”
127.0.0.1:6380> strlen k2
(integer) 5
127.0.0.1:6380> set k3 a
OK
127.0.0.1:6380> get k3
“a”
127.0.0.1:6380> strlen k3
(integer) 1
127.0.0.1:6380> append k3 中
(integer) 4
127.0.0.1:6380> strlen k3
(integer) 4

incr命令,是将字节从内存中拿出来,转换为数值,更新key上encoding为int,便于计算。

127.0.0.1:6380> set k2 中
OK
127.0.0.1:6380> STRLEN k2 //utf-8格式 中文占用3个字节
(integer) 3
不带–raw只识别ask码,若不是ask码 则按照二进制显示。加了会触发编码集的格式化
127.0.0.1:6380> redis-cli --raw //以raw方式启动
redis hbase都是二进制数据安全的

用redis时沟通好数据的编码和解码

##2.2数值操作命令
incr
incrby

127.0.0.1:6380> set k1 99
OK
127.0.0.1:6380> incr k1
(integer) 100
127.0.0.1:6380> INCRBY k1 22
(integer) 122

decr
decrby
incrbyfloat

127.0.0.1:6380> get k1
“122”
127.0.0.1:6380> decr k1
(integer) 121
127.0.0.1:6380> DECRBY k1 22
(integer) 99
127.0.0.1:6380> INCRBYFLOAT k1 0.5
“99.5”

setget命令:考虑成本问题开发此命令,通信时只需发一个命令,减少一次io通信

127.0.0.1:6380> set k1 hello
OK
127.0.0.1:6380> get k1
“hello”
127.0.0.1:6380> getset k1 baby //返回旧值,且更新此key对应的value
“hello”

msetnx
mget
上面两个操作均为原子性操作

127.0.0.1:6380> FLUSHALL //清库存
OK
127.0.0.1:6380> keys *
(empty array)
127.0.0.1:6380> msetnx k1 1 k2 2 //一次多设置几个健值对 当key不存在时才设置成功。
(integer) 1
127.0.0.1:6380> mget k1 k2 //一次多获取几个健对应的值

  1. “1”
  2. “2”

msetnx是原子性操作:k2已存在 所以设置失败,k3不存在本应设置成功,但因是原子性操作,因此也设置失败。

127.0.0.1:6380> MSETNX k2 c k3 d
(integer) 0
127.0.0.1:6380> mget k1 k2 k3

  1. “1”
  2. “2”
  3. (nil)

##2.3bitmap
offset:二进制位的偏移量

man ascii //可以查看asc码
1、BIN:binary,二进制的;
2、OCT:octal,八进制的;
3、HEX:hexadecimal,十六进制的;
4、DEC:decimal,十进制的。
当输入 man ascii
提示 没有 ascii 的手册页条目
证明没有安装man-pages
yum install -y man-pages

setbit 命令 :更改bit位的值

127.0.0.1:6379>help setbit
127.0.0.1:6379> setbit k1 1 1 //k1中第一位改为1
(integer) 0
127.0.0.1:6379> STRLEN k1
(integer) 1
127.0.0.1:6379> get k1
“@”
127.0.0.1:6379> SETBIT k1 7 1 //k1中第七位改为1
(integer) 0
127.0.0.1:6379> STRLEN k1
(integer) 1
127.0.0.1:6379> get k1
“A”
127.0.0.1:6379>
上面更改 用图形展示 如下:
在这里插入图片描述

127.0.0.1:6379> setbit k1 9 1 //第九位设置为1
(integer) 0
127.0.0.1:6379> strlen k1 //长度为2
(integer) 2
127.0.0.1:6379> get k1
“A@”

字符集标准的是ackii,其他的是扩展字符集。其他字符集不再对ackii重编码,复用。0XXXXXXX

bitpos命令 :返回在二进制位第一次出现的位置

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

bitcount命令:统计1出现几次

127.0.0.1:6379> BITCOUNT k1 0 1 //1在第0到第1个字节中 出现次数
(integer) 3

bitop命令

bitop and endkey k1 k2 //k1 k2按位与 结果存为endkey (有0为0 全1则1)
bitop or endkey k1 k2 //k1 k2按位或 结果存为endkey (有1则1 全0则0)

3.bitmap场景:
1.统计用户登录次数 一年365天 一天用一个bit位表示;便于统计任意区间登录次数

127.0.0.1:6379> setbit sean 1 1
(integer) 0
127.0.0.1:6379> setbit sean 7 1
(integer) 0
127.0.0.1:6379> setbit sean 364 1
(integer) 0
127.0.0.1:6379> STRLEN sean
(integer) 46
127.0.0.1:6379> BITCOUNT sean -2 -1 //最后15天用户登录次数
(integer) 1
127.0.0.1:6379>

2.假如618组织活动 用户只要登录就送礼物,问需要备货多少礼物?
假设京东有2亿用户
活跃用户进行统计 比如统计1号到3号活跃用户数,重复登录要去重

127.0.0.1:6379> setbit 20210101 1 1 //20210101日第一个用户登录一次
(integer) 0
127.0.0.1:6379> setbit 20210102 1 1 //20210102日第一个用户登录一次
(integer) 0
127.0.0.1:6379> setbit 20210102 7 1 //20210102日第7个用户登录一次
(integer) 0
127.0.0.1:6379> bitop or destkey 20210101 20210102 //按位或
(integer) 1
127.0.0.1:6379> bitcount destkey 0 -1 //统计登录次数 已去重(统计第零个字节到最后一个字节1出现的次数)
(integer) 2

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

网址:db-engines.com
查看几种类型数据库区别

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值