Redis数据类型——String

01 Redis数据模型

在这里插入图片描述

1.1 基本操作
# 登录不同的库
redis-cli --help
redis-cli -n 2

#清除当前库数据
FLUSHDB
#清除所有库中的数据
FLUSHALL

02 string 支持的数据方式:

  • 字符串是一种最基本的Redis值类型。Redis字符串是二进制安全的,这意味着一个Redis字符串能包含任意类型的数。例如: 一张JPEG格式的图片或者一个序列化的Ruby对象
  • 一个字符串类型的值最多能存储512M字节的内容
  • key的表征一直是字符串,变的是value
  • key : string
  • value: string

2.1 基本操作是字符串操作,追加,截取
set,get,append。。。。。。
2.2 登录客户端后,获取帮助
Help

Help <tab>

Help set

Help @string

2.3 命令String
#设置字符串值 set get

SET key  value [EX seconds] [PX milliseconds] [NX|XX]

#EX 设置过期时间,秒,等同于SETEX key seconds value

#PX 设置过期时间,毫秒,等同于PSETEX key milliseconds value

#NX 键不存在,才能设置,等同于SETNX key value

#XX 键存在时,才能设置

#设置多个键的字符串值

MSET key value [key value ...] 

#键不存在时,设置字符串值

MSETNX key value [key value ...]

#注意:这是原子操作,全成功或者全失败

# 案列
set s1 abc

set s2 12

set se abc ex 15

mset s3 3 s4 4 s5 5

msetnx s5 A5 s6 6
2.4 过期时间
# 过期 

Redis中可以给Key设置一个生存时间(秒或毫秒),当达到这个时长后,这些键值将会被自动删除

# 设置多少秒或者毫秒后过期
EXPIRE key seconds

get key 

set key val ex 10

PEXPIRE key milliseconds

# 设置在指定Unix时间戳过期

EXPIREAT key timestamp

PEXPIREAT key milliseconds-timestamp

# 删除过期

PERSIST key

# 生存时间

Time To Live,Key的剩余生存时间

# 查看剩余生存时间

TTL key

PTTL key

key存在但没有设置TTL,返回-1

key存在,但还在生存期内,返回剩余的秒或者毫秒

key曾经存在,但已经消亡,返回-2(2.8版本之前返回-1)

# 案列
set se abc ex 15

ttl s6

expire s6 60

pttl s6

persist s6

pttl s6

EXPIREAT cache 1355292000
PEXPIREAT mykey 1555555555005

2.5 查找
# 查找键
KEYS pattern

#  pattern取值
* 任意长度字符
? 任意一个字符
[] 字符集合,表示可以是集合中的任意一个


# 案列
keys s*
keys s?
keys s[13]
keys *
keys ??

2.6 键类型
# 键类型
TYPE key   
object encoding key
# 键是否存在
EXISTS key
# 键重命名
RENAME key newkey
RENAMENX key newkey
# 键删除
DEL key [key ...]

2.7 获取值
# 获取值
GET key
#获取多个给定的键的值
MGET key [key ...]
#返回旧值并设置新值,如果键不存在,就创建并赋值
GETSET key value
#字符串长度(2进制安全,中文体现redis-cli --raw 命令)
STRLEN key
object encoding key  > val 底层存储的数据结构类型e
2.8 追加字符串
#追加字符串,如果键存在就追加;如果不存在就等同于SET key value
APPEND key value
#获取子字符串  索引,索引值从0开始,负数表示从字符串右边向左数起,-1表示最后一个字符
GETRANGE key start end
# 覆盖字符串
SETRANGE key offset value

# 案列
APPEND s6 123
getrange s1 1 2
getrange s1 0 -1
getrange s1 -2 -1
getrange s1 0 10000
SETRANGE s6 3 e
SETRANGE s6 3 efghijk
SETRANGE newkey 5 hello
SETRANGE s6 3 efghijk
---------

2.9 步长增加
# 步长1的增减,字符串值会被解释成64位有符号的十进制整数来操作,结果依然转成字符串
INCR key
DECR key

# 步长增减   float,字符串值会被解释成64位有符号的十进制整数来操作,结果依然转成字符串
INCRBY key decrement
DECRBY key decrement  

03 位图

  • 位图不是真正的数据类型,它是定义在字符串类型中
  • 一个字符串类型的值最多能存储512M字节的内
# 位上限
2^(9+10+10+3)=2^32b
3.1 命令
 # 设置某一位上的值,offset偏移量,从0开始

SETBIT key offset value  (0/1)

# 获取某一位上的值

GETBIT key offset

#返回指定值0或者1在指定区间上第一次出现的位置偏移量

BITPOS key bit [start] [end]

bitpos k1 1 1 1

k2:  0 1 0 0 0 0 1 0    0 1 0 0 0 0 0 0 

k3:  0 1 0 0 0 0 1 0  

0 1 0 1 0 0 0 1 0 1 0 0 0 0 1 0

setbit k1 1 1
3.2 位操作
# 位操作

0 1 0 0 0 0 0 1

1 1 1 0 0 0 0 1

0 1 0 0 0 0 0 1

# 1. 对一个或多个保存二进制位的字符串 key 进行位元操作,并将结果保存到 destkey 上

#2. operation 可以是 AND 、 OR 、 NOT 、 XOR 这四种操作中的任意一种

#3. BITOP AND destkey key [key ...] ,对一个或多个 key 求逻辑并,并将结果保存到 destkey

# 4. BITOP OR destkey key [key ...] ,对一个或多个 key 求逻辑或,并将结果保存到 destkey

#5. BITOP XOR destkey key [key ...] ,对一个或多个 key 求逻辑异或,并将结果保存到 destkey

#6. BITOP NOT destkey key ,对给定 key 求逻辑非,并将结果保存到 destkey

#7.  除了 NOT 操作之外,其他操作都可以接受一个或多个 key 作为输入

#8. 当 BITOP 处理不同长度的字符串时,较短的那个字符串所缺少的部分会被看作 0

#9.空的 key 也被看作是包含 0 的字符串序列
3.3 统计指定位区间上值为1的个数
`bitpos key  bit(0/1)  start end   > start end`  #bit位的索引
BITCOUNT key [start] [end] `> start end`  # Byte位的索引  正负方向
set k ab   bitcount k 1 1 
# 从左向右从0开始,从右向左从-1开始,注意官方start、end是位,测试后是字节
BITCOUNT testkey 0 # 0表示从索引为0个字节到索引为0个字节,就是第一个字节的统计
BITCOUNT testkey 0  # -1等同于BITCOUNT testkey
BITCOUNT testkey # 最常用的就是 

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值