04.redis-五大数据类型(1)
(一)String(字符串)
(1)String常用操作
主要操作有添加、查询、追加、获取长度,判断是否存在的操作
主要命令:get、set、append、strlen、keys、exists
127.0.0.1:6379> set name jackier #添加一个key为'name'值为'jackier'的数据 OK 127.0.0.1:6379> get name #获取key为'name'的值 "jackier" 127.0.0.1:6379> set name1 chan OK 127.0.0.1:6379> keys * #查询当前库所有的数据 1) "name1" 2) "name" 127.0.0.1:6379> get name #获取key为'name'的值 "jackier" 127.0.0.1:6379> get name1 #获取key为'name1'的值 "chan" 127.0.0.1:6379> append name Good #追加key为'name'的数据拼接'Good'(如果'key'不存在,则新增一个,类似于redis的set name Good)并返回字符串长度 (integer) 11 127.0.0.1:6379> append name1 " you are handsome" #注意:如果要加入的是多个字符,则应加双引号,不然空格redis默认结束。 (integer) 21 127.0.0.1:6379> get name #获取拼接后的字符 "jackierGood" 127.0.0.1:6379> get name1 "chan you are handsome" 127.0.0.1:6379> strlen name1 #获取key为name的字符长度 (integer) 21 127.0.0.1:6379> exists name1 #判断某个key是否存在 (integer) 1 #存在 127.0.0.1:6379> exists k1 (integer) 0 #不存在
模糊查询keys命令,有三个通配符:
(1)通配任意多个字符
- 查询所有的键
key *
- 模糊查询k开头,后面随便多少个字符
keys k*
- 模糊查询e为最后一位,前面随便多少个字符
keys *e
- 双 * 模式,匹配任意多个字符:查询包含k的键
keys *k*
(2)通配单个字符
模糊查询k字头,并且匹配一个字符
keys k?
你只记得第一个字母是k,他的长度是3
keys k??
(3)通配括号内的某一个字符
- 记得其他字母,就第二个字母可能是a或e
keys r[ae]dis
(2)String截取、替换字符串操作
常用命令:
- getrange:(getrange key1 0 4)相当于java中的subString,下标从0开始,不会改变原有数据;
- setrange:(setrange key2 5 888)此语句跟java中replace有点类似,下标也是从0开始,但是有区别:java中是指定替换字符,Redis中是从指定位置开始替换,替换的数据根据你所需替换的长度一致,返回值是替换后的长度。
#截取
127.0.0.1:6379> set key1 "hello world!"
OK
127.0.0.1:6379> get key1
"hello world!"
127.0.0.1:6379>getrange key1 0 4 #截取字符串,相当于java中的subString,下标从0开始,不会改变原有数据
"hello"
127.0.0.1:6379> get key1
"hello world!"
127.0.0.1:6379> getrange key1 0 -1 #0至-1相当于 get key1,效果一致,获取整条数据
"hello world!"
#替换
127.0.0.1:6379> set key2 "hello,,,world!"
OK
127.0.0.1:6379> get key2
"hello,,,world!"
127.0.0.1:6379>setrange key2 5 888 #此语句跟java中replace有点类似,下标也是从0开始,但是有区别:java中是指定替换字符,Redis中是从指定位置开始替换,替换的数据根据你所需替换的长度一致,返回值是替换后的长度
(integer) 14
127.0.0.1:6379> get key2
"hello888world!"
127.0.0.1:6379> setrange key2 5 67 #该处只替换了两位
(integer) 14
127.0.0.1:6379> get key2
"hello678world!"
(3)加减操作
一般用来做文章浏览量、点赞数、收藏数等功能
incr/decr/incrby/decrby:加减操作,操作的必须是数字类型
- incr:意思是increment,增加
- decr:意思是decrement,减少
127.0.0.1:6379> set num 0 #设置key为'num'的值为0 OK 127.0.0.1:6379> get num "0" 127.0.0.1:6379> incr num #num自增1(相当于i++) (integer) 1 127.0.0.1:6379> incr num #继续自增 (integer) 2 127.0.0.1:6379> get num "2" 127.0.0.1:6379> decr num #num自减 (integer) 1 127.0.0.1:6379> decr num (integer) 0 127.0.0.1:6379> decr num (integer) -1 127.0.0.1:6379> decr num #可以持续自减 (integer) -2 127.0.0.1:6379> incrby num 10 #带by的表示一次key为'num'自增10 (integer) 8 127.0.0.1:6379> incrby num 10 #连续自增 (integer) 18 127.0.0.1:6379> incrby num 10 (integer) 28 127.0.0.1:6379> incrby num 10 (integer) 38 127.0.0.1:6379> get num #查询key为'num'的值 "38" 127.0.0.1:6379> decrby num 8 #带by表示一次key为'num'自减8 (integer) 30 127.0.0.1:6379> decrby num 8 (integer) 22 127.0.0.1:6379> decrby num 8 (integer) 14 127.0.0.1:6379> decrby num 8 #连续自减 (integer) 6 127.0.0.1:6379>
mset、mget、msetnx操作
- msetnx是一个原子性的操作,在一定程度上保证了事务!要么都成功,要么都失败!
127.0.0.1:6379> set k1 v1 k2 v2 # set不支持一次添加多条数据
(error) ERR syntax error
127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3 # mset可以一次添加多条数据
OK
127.0.0.1:6379> keys *
1) "k3"
2) "k2"
3) "k1"
127.0.0.1:6379> mget k1 k2 k3 # 一次获取多条数据
1) "v1"
2) "v2"
3) "v3"
127.0.0.1:6379> msetnx k3 v33 k4 v4 # 一次添加多条数据时,如果添加的数据中有已经存在的,则失败
(integer) 0
127.0.0.1:6379> msetnx k4 v44 k5 v55 #全部成功
(integer) 1
127.0.0.1:6379> mget k1 k2 k3 k4 k5
1) "v1"
2) "v2"
3) "v3"
4) "v44"
5) "v55"
- getset操作
- 先get后set
127.0.0.1:6379> getset k6 v6
(nil)
127.0.0.1:6379> keys *
1) "k4"
2) "k6"
3) "k1"
4) "k5"
5) "k2"
6) "k3"
expire:设置过期时间
- ttl key:查看键还有多久过期(-1永不过期,-2已过期)
- time to live 还能活多久
127.0.0.1:6379> expire k1 15 #设置key为'k1'的数据过期时间为15秒 单位seconds (integer) 1 127.0.0.1:6379> ttl k1 (integer) 9 127.0.0.1:6379> ttl k1 (integer) 6 127.0.0.1:6379> ttl k1 (integer) 3 127.0.0.1:6379> ttl k1 (integer) -2
设置过期时间、不存在设置操作
- 设置过期时间,跟Expire的区别是前者设置已存在的key的过期时间,而setex是在创建的
127.0.0.1:6379> setex num 15 hello OK 127.0.0.1:6379> ttl num (integer) 10 127.0.0.1:6379> ttl num (integer) 7 127.0.0.1:6379> ttl num (integer) 5 127.0.0.1:6379> ttl num (integer) 2 127.0.0.1:6379> ttl num #返回为-2时证明该key已过期,即不存在 (integer) -2 127.0.0.1:6379> setnx num1 hello2 #如果key为‘num1’不存在,新增数据,返回值1证明成功 (integer) 1 127.0.0.1:6379> setnx num1 hello2 #如果key为‘num1’的已存在,设置失败,返回值0,也就是说这个跟set的区别是:set会替换原有的值,而setnx不会,存在即不设置,确保了数据误操作~ (integer) 0 127.0.0.1:6379> keys * 1) "k4" 2) "k6" 3) "k5" 4) "num1" 5) "k2" 6) "k3" 7) "k11"
04.redis-五大数据类型(1)相关推荐
- note.. redis五大数据类型
redis 五大数据类型使用 nosql介绍,由来 什么是nosql 阿里巴巴的架构 nosql 四大分类 redis入门 概述 redis 安装 (docker) 基础的知识 redis五大数据类型 ...
- Redis五大数据类型
Redis五大数据类型 Redis数据类型 key + Østring Øset Ølist Øhash Øzset Redis五大数据类型 --Key Ø keys * • 查询当前库的所有键 Ø ...
- Redis五大数据类型常用命令
Redis五大数据类型 Redis-Key 1.查看当前数据库的key keys * #返回当前数据库下的所有key 2.设置key set key value 3.获取key的value get k ...
- (一)Redis——五大数据类型及基础知识
一位爱好技术的橘右京的哥哥橘左京 Redis--五大数据类型及基础知识(一) Redis 1.Redis命令 1.1 常用String命令 1.2 常用List命令 1.3 常用Hash命令 1.4 ...
- Redis五大数据类型(字符串对象(string)、列表对象(list)、哈希对象(hash)、无序集合(set)和Sorted Set数据类型(zset有序集合))
Redis五大数据类型 一.String(字符串)数据类型 1.SET/GET/APPEND/STRLEN 2.INCR/DECR/INCRBY/DECRBY 3.GETSET 4. SETEX 5. ...
- Redis五大数据类型与使用场景汇总!!(含完整实战案例,建议收藏)
本文全面讲述了Redis的五大数据类型和使用场景,含完整实战案例,强烈建议收藏!! 大家好,我是冰河~~ 最近面试跳槽的小伙伴有点多,给我反馈的面试情况更是千差万别,不过很多小伙伴反馈说:面试中的大部 ...
- 【数据存储】【Redis】第三章: Redis五大数据类型实现原理
Redis五大数据类型实现原理 对于五大数据类型(String,list,Hash,Set,Zset)实现原理,Redis在底层用到了多种数据结构,通过数据结构来实现键值对,将数据结构创建了一个对象r ...
- 【Redis五大数据类型】
Redis五大数据类型 前言 一.字符串String 1. set / get / del / append / strlen 2. incr / decr / incrby / decrby 3. ...
- redis学习-redis五大数据类型
五大数据类型简介 String(字符串) string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value. 也就是例子中的k1 v1,k2 v2 s ...
- redis 五大数据类型
文章目录 一.Redis-Key 二.String 三.List 四. Set ( 集合 ) 五.Hash(哈希) 六.Zset(有序集合) 视频链接 官网: https://redis.io/ 中文 ...
最新文章
- c# 串口最简单接收十六进制
- django用户认证系统——注册3
- 利用Hyperledger Fabric开发第一个区块链应用
- DL之MobileNetV2:MobileNetV2算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
- 【Java面试题视频讲解】字符个数统计
- 原创 Reflector 8.1 反激活
- C# 的未来:主构造函数
- GAN之再进化:分布判别器,大连理工提出一种新式无监督图像合成方法
- day05 数据类型
- “化鲲为鹏,我有话说”如何用鲲鹏弹性云服务器部署《Hadoop伪分布式》
- 智能排班系统、班次、班表、考勤、年假、调休、审批、请假、培训、值班、换班、加班、工时、自动排班、智能预测、人力需求预测、授权、团队、锁定量排、规则权重设置、菜单、角色、数据监控、工作台、axure
- linux 0.11 返回用户侧,iPhone 11 11 Pro 用户必备教程:重启手机,恢复模式,DFU模式...
- 19.go fix 和 go tool fix
- 中断(二)—— x86 APIC
- 阅读乔布斯:一个人留下的世界
- 游戏策划入门(6)——把模块变成现实
- 谷歌小恐龙PHP代码,Chrome小恐龙前端修改代码代码总结
- VTN4系列多通道振弦模拟信号采集仪模拟通道值和振弦传感器温度通道值修正
- assign 组合逻辑和always@(*)组合逻辑的区别
- 禁止ubuntu更新内核
热门文章
- void (*p)() 、 void *p()和void指针的区别
- python脚本自动qq签到_Python实现自动签到脚本功能
- Perl、PHP、Python、Java和Rub之间的异同比较
- 合并多个Redis dump.rdb 到一个rdb的多个database
- Linux性能分析利器sar
- 遍历字典,python代码
- matlab坐标外围背景变白色
- 你已不在风口上猪都会飞的年代:“ICU”绝不是你不想“996”的借口!
- C++编译器为空类“润物细无声”地做些什么
- Mac下打包iPhone越狱 deb格式文件(详细教程)