redis学习(五)
时间:2022-07-24
本文章向大家介绍redis学习(五),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
五大数据类型
官网文档
后面我们使用SpringBoot。Jedis,所有的方法,就是这些命令!
Redis-key
127.0.0.1:6666> keys * # 查看所有key
(empty array)
127.0.0.1:6666> set name cxy # 存入一个字符串类型
OK
127.0.0.1:6666> keys *
1) "name"
127.0.0.1:6666> set age 1
OK
127.0.0.1:6666> keys *
1) "age"
2) "name"
127.0.0.1:6666> exists name # 判断当前key是否存在
(integer) 1
127.0.0.1:6666> exists name1
(integer) 0
127.0.0.1:6666> move name 1 # 移除当前key
(integer) 1
127.0.0.1:6666> keys *
1) "age"
127.0.0.1:6666> set name cuixiaoyan
OK
127.0.0.1:6666> keys *
1) "age"
2) "name"
127.0.0.1:6666> get name
"cuixiaoyan"
127.0.0.1:6666> expire name 10 # 设置key过期时间
(integer) 1
127.0.0.1:6666> ttl name # 查看key的剩余时间
(integer) 6
127.0.0.1:6666> ttl name
(integer) 5
127.0.0.1:6666> ttl name
(integer) -2
127.0.0.1:6666> get name
(nil)
127.0.0.1:6666> type age # 通过key查看类型
string
string(字符串)
# 基本操作
127.0.0.1:6666> flushall # 清空redis
OK
127.0.0.1:6666> set key1 v1
OK
127.0.0.1:6666> get key1
"v1"
127.0.0.1:6666> exists key1 # 判断key是否存在
(integer) 1
127.0.0.1:6666> append key1 "hello" # 追加字符串
(integer) 7
127.0.0.1:6666> get key1
"v1hello"
127.0.0.1:6666> strlen key1 # 通过key获取值的长度
(integer) 7
127.0.0.1:6666> append key1 "cxy"
(integer) 10
127.0.0.1:6666> strlen key1
(integer) 10
127.0.0.1:6666> get key1
"v1hellocxy"
# i++ 步长 i+=
127.0.0.1:6666> set views 0 # 初始化
OK
127.0.0.1:6666> get views
"0"
127.0.0.1:6666> incr views # incr 加一
(integer) 1
127.0.0.1:6666> incr views
(integer) 2
127.0.0.1:6666> decr views # decr 减一
(integer) 1
127.0.0.1:6666> decr views
(integer) 0
127.0.0.1:6666> incrby views 10 # incrby 加n
(integer) 10
127.0.0.1:6666> incrby views 10
(integer) 20
127.0.0.1:6666> decrby views 5 # decrby 减n
(integer) 15
# 字符串范围 range
127.0.0.1:6666> set key1 "hello,cuixiaoyan"
OK
127.0.0.1:6666> get key1
"hello,cuixiaoyan"
127.0.0.1:6666> getrange key1 0 3 # 截取字符串[0,3]
"hell"
127.0.0.1:6666> getrange key1 0 -1 # -1为全部,效果如同get key
"hello,cuixiaoyan"
127.0.0.1:6666> set key2 qqwsadascas
OK
127.0.0.1:6666> get key2
"qqwsadascas"
127.0.0.1:6666> setrange key2 1 xxx # 替换指定位置开始的字符串为 xxx
(integer) 11
127.0.0.1:6666> get key2
"qxxxadascas"
# 设置过期时间 setex(set with expire) 不存在时再进行设置(分布式锁中会使用到) setnx(set if not exist)
127.0.0.1:6666> setex key3 30 "hello" # 设置过期时间为30秒
OK
127.0.0.1:6666> ttl key3
(integer) 26
127.0.0.1:6666> ttl key3
(integer) 16
127.0.0.1:6666> setnx mykey "redis" # key不存在才会增加
(integer) 1
127.0.0.1:6666> keys *
1) "key2"
2) "views"
3) "mykey"
4) "key1"
127.0.0.1:6666> setnx mykey "MongoDB" # 替换失败
(integer) 0
127.0.0.1:6666> getrange mykey 0 -1 # 截取字符串,等同于get key
"redis"
127.0.0.1:6666> setnx mykey1 "MongoDB" # 新增成功
(integer) 1
127.0.0.1:6666> getrange mykey1 0 -1
"MongoDB"
# 设置多个值,mset,mget
127.0.0.1:6666> flushall #先清空
OK
127.0.0.1:6666> mset k1 v1 k2 v2 k3 v3 # 批量设置多个
OK
127.0.0.1:6666> keys *
1) "k3"
2) "k1"
3) "k2"
127.0.0.1:6666> mget k1 k2 k3 # 批量获取多个
1) "v1"
2) "v2"
3) "v3"
127.0.0.1:6666> msetnx k1 v1 k4 v4 #因为k1已经存在,不符合条件,原子性不满足,导致失败。
(integer) 0
127.0.0.1:6666> keys *
1) "k3"
2) "k1"
3) "k2"
# 设置一个对象,这里的key是一个巧妙的设计: user:{id}:{filed} , 如此设计在Redis中是完全可以的。
127.0.0.1:6666> mset user:1:name cxy user:1:age 2
OK
127.0.0.1:6666> mget user:1:name user:1:age
1) "cxy"
2) "2"
# getset 先get,再set。
127.0.0.1:6666> getset db redis # 第一次获取没有key,返回nil,将会赋值。
(nil)
127.0.0.1:6666> get db
"redis"
127.0.0.1:6666> getset db mysql # 第二次有值之后,就会修改。
"redis"
127.0.0.1:6666> get db
"mysql"
数据结构是相同的! String类似的使用场景:value除了是我们的字符串还可以是我们的数字!
- 计数器
- 统计多单位的数量
- 粉丝数
- 对象缓存存储
- 深入理解Python变量作用域与函数闭包
- TensorFlow从1到2 - 5 - 非专家莫入!TensorFlow实现CNN
- JetBrains Rider 破解 (ideaIU等等开发工具都通用)
- python中的小魔法(一)
- 由问题入手,步步爬出Python中赋值与拷贝的坑
- python爬取链家租房之获得每一页的房屋信息地址(持续更新)
- python使用正则表达式
- python在租房过程中的应用
- python爬虫反爬取---设置IP代理自动变换requests.get()中proxy的IP
- 【译】TensorFlow实现Batch Normalization
- 关于Python语言规范你需要知道的一些小tips
- R语言可视化——REmap(路径图)
- python面向对象
- 字符串hash入门
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法