2-Redis五大基本数据类型之String

前置条件#

redis安装完成并启动

连接redis并清空所有数据

Redis-key#

在redis中无论什么数据类型,在数据库中都是以key-value形式保存,通过进行对Redis-key的操作,来完成对数据库中数据的操作。

key常见操作#

Copy
Copy
127.0.0.1:6379> FLUSHALL #清空所有数据 OK 127.0.0.1:6379> 127.0.0.1:6379> keys * #确认清空 (empty array) 127.0.0.1:6379> set name itblue #设置一个key OK 127.0.0.1:6379> keys * #查看key 1) "name" 127.0.0.1:6379> set age 10 #设置一个key 并赋值 OK 127.0.0.1:6379> keys * #查询key 1) "age" 2) "name" 127.0.0.1:6379> EXISTS name #查询key是否存在 (integer) 1 127.0.0.1:6379> EXISTS name1 (integer) 0 127.0.0.1:6379>

设置key过期时间#

Copy
Copy
127.0.0.1:6379> get name #查询key的值 "bluehaha" 127.0.0.1:6379> expire name 30 #设置key name 30秒过期时间 (integer) 1 127.0.0.1:6379> ttl name #查看当前key剩余时间 (integer) 21 127.0.0.1:6379> ttl name (integer) 17 127.0.0.1:6379> ttl name (integer) 15 127.0.0.1:6379> ttl name (integer) 12 127.0.0.1:6379> ttl name (integer) 10 127.0.0.1:6379> ttl name (integer) 4 127.0.0.1:6379> ttl name #key name 已过期 (integer) -2 127.0.0.1:6379> get name #查询不到key name (nil) 127.0.0.1:6379> 127.0.0.1:6379> type age #查看key name的类型 string 127.0.0.1:6379> 其它操作可以搜索 官方查看帮助文档补充

String类型#

string基本操作#

Copy
Copy
127.0.0.1:6379> set key1 v1 #设置一个key=key1 值=v1 OK 127.0.0.1:6379> get key1 #查看key1的值 "v1" 127.0.0.1:6379> exists key1 #查看key1是否存在 (integer) 1 127.0.0.1:6379> 127.0.0.1:6379> append key1 "hello world" #追加key1的值 (integer) 13 #默认返回字符串长度 127.0.0.1:6379> get key1 #查看key1的值 "v1hello world" #内容追加成功 127.0.0.1:6379> append key3 "hellojoke"#如果追加的key不存在就创建 (integer) 9 127.0.0.1:6379> get key3 #之前不存在key3 append之后就存在了 "hellojoke" 127.0.0.1:6379> 127.0.0.1:6379> strlen key1 #获取key1长度 (integer) 13 127.0.0.1:6379>

String实现i++#

Copy
Copy
127.0.0.1:6379> set views 0 #创建key=views 值=0 OK 127.0.0.1:6379> get views# 查询 "0" 127.0.0.1:6379> incr views #incr 对key=views的值+1操作 (integer) 1 #+1=1 127.0.0.1:6379> incr views (integer) 2 #1+1=2 127.0.0.1:6379> incr views (integer) 3 #2=1=3 127.0.0.1:6379> 127.0.0.1:6379> get views #key=views 的值=3 "3" 127.0.0.1:6379> 127.0.0.1:6379> get views "3" 127.0.0.1:6379> incr views #相当于i++ 现在views=4 (integer) 4 127.0.0.1:6379> incr views #自增1 =5 (integer) 5 127.0.0.1:6379> incr views #自增+1=6 (integer) 6 # i-- 127.0.0.1:6379> decr views # decr=自减 1 (integer) 5 #views=5 127.0.0.1:6379> decr views #再次自减 (integer) 4 #views=4 127.0.0.1:6379> decr views #再次自减 (integer) 3 #views=3 127.0.0.1:6379> #以上不论自增还是自减 默认都是1 #设置自增/自减的步长 127.0.0.1:6379> incrby viewer 10 #incrby 自增步长=10 (integer) 10 127.0.0.1:6379> incrby viewer 10 #自增=10 #views=20 (integer) 20 127.0.0.1:6379> incrby viewer 10#自增=10 #views=30 (integer) 30 127.0.0.1:6379> incrby views 10 #自增=10 views=15 (integer) 15 127.0.0.1:6379> decrby views 5# ecrby 自减步长=10 (integer) 10 #15变成10 127.0.0.1:6379>

Sting 截取替换#

Copy
Copy
#截取 127.0.0.1:6379> set key1 onetwohaha #设置key=key1的值 OK 127.0.0.1:6379> get key1 #查看key1的值 "onetwohaha" 127.0.0.1:6379> getrange key1 0 3# getrange 截取key1 [0-3]的字符 "onet" 127.0.0.1:6379> getrange key1 0 -1 #截取全部字符 "onetwohaha" ##替换 127.0.0.1:6379> set key3 abcdef #设置key3的值 OK 127.0.0.1:6379> get key3 #查看key3的值 "abcdef" 127.0.0.1:6379> setrange key3 1 ** #从第一个字符串开始 后面的2个字符串替换成* 也就是把 字符串位置 1 和2的替换成* (integer) 6 127.0.0.1:6379> get key3 "a**def" 127.0.0.1:6379>

String 批量设置#

Copy
Copy
#setex(set with expire) 设置失效 #setnx(set if not exist) 设置如果不存在就创建 分布式锁中常使用 127.0.0.1:6379> setex key4 30 "hello world" #设置key4 失效时间30s OK 127.0.0.1:6379> ttl key4 (integer) 24 127.0.0.1:6379> ttl key4 #key4的有效时间在减少 (integer) 21 127.0.0.1:6379> setnx key5 "redis" #如果不存在就创建 key5=redis (integer) 1 #成功了返回1 #说明key5确实不存在 并创建了key5=redis 127.0.0.1:6379> keys * #key4已经过期没有了 1) "key1" 2) "key3" 3) "key2" 4) "key5" 127.0.0.1:6379> ttl key4 #key4已经过期没有了 (integer) -2 127.0.0.1:6379> setnx key5 "redishaha" #如果不存在就创建置 (integer) 0 #设置失败了返回0 因为上面创建了key5=redis 127.0.0.1:6379> get key5 # 后面的没有创建成功 #key5的值还是redis 所有setnx是没有则创建并赋值 "redis" 127.0.0.1:6379> #批量设置 #mset 同时设置多个key=value #mget 127.0.0.1:6379> flushall #先清空 OK 127.0.0.1:6379> get keys #确认是空的 (nil) 127.0.0.1:6379> keys * #没有任何key (empty array) 127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3 #同时设置多个值 OK 127.0.0.1:6379> keys * #创建的所有key 1) "k1" 2) "k3" 3) "k2" 127.0.0.1:6379> mget k1 k2 k3 #创建的所有value 1) "v1" 2) "v2" 3) "v3" 127.0.0.1:6379> msetnx k1 v1 k4 v4 #msetnx如果不存在批量创建 #原子性操作 要么一起成功 要么一起失败 (integer) 0 #创建失败 因为k1是存在的 127.0.0.1:6379> get key4 #所以key4也没有创建成功 (nil) 127.0.0.1:6379> #创建对象 set user:1 {name:zhangsan,age:3} #设置一个key=user:1对象 值为json字符来保存一个对象 #巧妙的设计了key 127.0.0.1:6379> mset user:1:name zhangsan user:1:age 2 #user:1:name作为key来使用 key的名字 见名知意 OK 127.0.0.1:6379> mget user:1:name user:1:age #获取信息 1) "zhangsan" 2) "2" 127.0.0.1:6379> 127.0.0.1:6379> keys * 1) "k3" 2) "user:1:age" #这个作为一个key存进去 3) "k1" 4) "k2" 5) "user:1:name" 127.0.0.1:6379> #getset 先get获取当前值在set设置新的值 127.0.0.1:6379> getset dba redis #如果不存在就返回nil 在设置新的值 (nil) #key=dba 默认值是null 所有返回这个 127.0.0.1:6379> get dba #再次查询 可以查询到set后的的结果 "redis" 127.0.0.1:6379> getset dba mango #如果存在先返回原来的值 在设置新的值 更新操作 "redis" #原来的值 127.0.0.1:6379> getset dba mango #再次查询 set成功的值 "mango" 127.0.0.1:6379>

String的应用场景#

string除了是字符串 可以是数字 统计访问量等

计数器

粉丝数

统计多单位数量

对象缓存

本篇命令集锦#

set key1 v1 #设置一个key1 值v1

exists key1 #查看key1是否存在

append key1 "hello world" #追加key1的值 不存在就创建

get key3 #查询key3的值

strlen key1 #获取字符串key1长度

incr views #自增views的值 默认步长为1

decr views #自减views的值 默认步长为1

incrby viewer 10 #自增viewer的值 设置步长为10

decrby views 5 #自减viewer的值 设置步长为5

getrange key1 0 3 #截取 key的[0-3]个字符的值

setrange key3 1 aa # 从第一个开始 后面2个字符替换成aa

setex key4 30 "hello world" #设置key4 失效时间30s

ttl key4 #查看key4当前有效时间

setnx key5 "redis" #如果不存在就创建 key5

mset k1 v1 k2 v2 k3 v3 #同时设置多个key-value

mget k1 k2 k3 #同时获取多个key的值

msetnx k1 v1 k4 v4 #如果不存在批量创建 原子性操作 要么一起成功 要么一起失败

setnx key5 "redis" #如果不存在就创建 key5

posted @   机猿巧合  阅读(38)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示
CONTENTS