Redis数据类型--string
在Redis中支持丰富的数据类型的存储系统,包括:字符串(string),散列(hashes),列表(lists),集合(sets),有序集合(sorted sets),与范围查询,bitmaps,hyperloglogs和地理空间(geospatial)索引半径查询。
针对每一种数据类型都提供了丰富的操作命令。
字符串(String)
我们知道,redis是用C语言编写的,但是在Redis中的字符串,并没有使用传统的C语言中的字符串,而是自己构建一种名为简单字符串(simple dynamic String,SDS)的抽象类型,并且作为Redis的默认字符串表示。
并且,在Redis中的字符串是二进制安全的。也就是说可以包含任何类型的数据,例如:JPEG类型的图片,或者对象化过的对象。
一个字符串最大能存储512M的内容。
Redis提供的操作String的命令
redis提供的操作字符串的命令大概有24个。
GETSET:设置一个key的value值,并获取设置前的值
SETRANGE/GETRANGE:设置或获取指定偏移位置的值
INCRBYFLOAT:对浮点数类型执行递增操作
SETEX/PSETEX:设置值,过期时间以秒或毫秒计算
SETNX/MSETNX:设置一个或多个值,只有当key都不存在的时候
STRLEN:获取指定key的长度
APPEND:追加一个值到key上
GETBIT/SETBIT:设置或返回在指定位上的值
BITOP/BITPOS/BITCOUNT/BITFIELD:执行一些位操作
SET:用来给指定key设值,时间复杂度O(1)。
SET key value [EX seconds] [PX milliseconds] [NX|XX]
key:键 value:值 EX seconds:过期时间,单位为秒 PX milliseconds:过期时间,单位为毫秒
NX:只有不存在的时候才设值 XX:自会有存在的时候才设值
默认情况下,如果存在的话,set会覆盖原来的值,过期时间什么的也会被清空
如果设置成功则返回OK,但是设置了NX或者XX的时候,设置失败的时候返回nil
GET:返回key关联的字符串值,时间复杂度O(1)。
GET key
如果key不存在,则返回nil,否则返回字符串的值。
127.0.0.1:6379> set name lisi
OK
127.0.0.1:6379> get name
"lisi"
127.0.0.1:6379> set name wangwu
OK
127.0.0.1:6379> get name
"wangwu"
#设置过期时间30秒
127.0.0.1:6379> set age 23 EX 30
OK
127.0.0.1:6379> get age
"23"
#三十秒后就过期了,在去get就不存在了
127.0.0.1:6379> get age
(nil)
#设置过期时间5000毫秒
127.0.0.1:6379> set address shanghai PX 5000
OK
127.0.0.1:6379> get address
"shanghai"
127.0.0.1:6379> get address
(nil)
127.0.0.1:6379> set class three NX
OK
#只有不存在的时候才会去设值
127.0.0.1:6379> set class three NX
(nil)
127.0.0.1:6379> set class two NX
(nil)
127.0.0.1:6379> get class
"three"
#只有存在的时候才去设值
127.0.0.1:6379> set class four XX
OK
127.0.0.1:6379> get class
"four"
127.0.0.1:6379> get grade
(nil)
127.0.0.1:6379> set grade one XX
(nil)
127.0.0.1:6379>
MSET
MSET key value[key value。。。。]
同时设置一个或多个key-value。时间复杂度O(N),N为要设置的key的数量
MSET是一个院子操作,所给定key都会在同一时间内被设置。
MGET
返回所有,一个或多个给定key的值,时间复杂度为O(N)
127.0.0.1:6379> MSET name fuwh age 18 address beijing
OK
127.0.0.1:6379> MGET name address tel
1) "fuwh"
2) "beijing"
3) (nil)
127.0.0.1:6379>
GETSET
将给定key的值设为value,并返回key的旧值,时间复杂度O(1)。
127.0.0.1:6379> set name fuwh
OK
127.0.0.1:6379> getset name lisi
"fuwh"
127.0.0.1:6379> get name
"lisi"
127.0.0.1:6379>
SETRANGE
SETRANGE key offset value
用value参数覆盖给定key所存储的字符串从偏移量offset开始的部分,
时间复杂度:对于小的字符串为O(1),否则为O(M),M为value的参数长度
返回值为被修改后字符串的长度。
GETRANGE
GETRANGE key start end
返回key中字符串值的子字符串,字符串的截取范围由start和end两个偏移量决定。
负数表示从字符串最后开始技术,-1表示最后一个字符,-2表示倒数第二个。
时间复杂度为O(N),N为要返回的字符串长度。
127.0.0.1:6379> get name
"lisi"
127.0.0.1:6379> setrange name 3 hong
(integer) 7
127.0.0.1:6379> get name
"lishong"
127.0.0.1:6379> setrange name 9 java
(integer) 13
127.0.0.1:6379> get name
"lishong\x00\x00java"
127.0.0.1:6379> get name2
(nil)
127.0.0.1:6379> setrange name2 3 zhaoliu
(integer) 10
127.0.0.1:6379> get name2
"\x00\x00\x00zhaoliu"
127.0.0.1:6379> getrange name 0 -1
"lishong\x00\x00java"
127.0.0.1:6379> getrange name 0 22
"lishong\x00\x00java"
127.0.0.1:6379> getrange name -3 -1
"ava"
127.0.0.1:6379>
INCR:时间复杂度O(1)
INCR key:将key中存储的数字值增1,如果key不存在,那么key的值会被先初始化为0,在执行incr操作。
DECR:时间复杂度O(1)
DECR key:将key中存储的数字值减1,如果key不存在,那么key的值会先辈初始化为0,在执行decr操作。
INCRBY:时间复杂度O(1)
INCRBY key increment:将key所存储的值加上增量increment
如果key不存在,那么会先将key的值初始化为0,在执行incrby操作
DECRBY:时间复杂度O(1)
DECRBY key decrement:将key所存储的值减去增量increment
如果key不存在,那么key的值会先被初始化为0,然后在执行decrby操作。
INCRBYFLOAT:时间复杂度O(1)
INCRBYFLOAT key increment:为key中所存储的值加上否点数增量increment
如果key不存在,那么increbyfloat会先将key的值设为0,在执行操作。
127.0.0.1:6379> INCR age
(integer) 19
127.0.0.1:6379> INCR age2
(integer) 1
127.0.0.1:6379> INCR name
(error) ERR value is not an integer or out of range
127.0.0.1:6379> decr age
(integer) 18
127.0.0.1:6379> decr age3
(integer) -1
127.0.0.1:6379> decr age3
(integer) -2
127.0.0.1:6379> incrby name 2
(error) ERR value is not an integer or out of range
127.0.0.1:6379> incrby age 2
(integer) 20
127.0.0.1:6379> incrby age4 3
(integer) 3
127.0.0.1:6379> decrby age4 5
(integer) -2
127.0.0.1:6379> decrby age6 3
(integer) -3
127.0.0.1:6379> incrbyfloat age 2.0
"22"
127.0.0.1:6379> incrbyfloat age 2.1
"24.1"
127.0.0.1:6379> incrbyfloat age -2.1
"22"
127.0.0.1:6379>
SETEX/PSETEX/SETNX/MSETNX
需要注意的是,这几个命令都可通过SET命令的选项来取代,所以,后面的版本可能会取现这几个命令。
SETEX:set的时候同时设置过期时间,单位为秒,时间复杂度为O(1)
SETEX key seconds value
SETNX:仅当key不存在的时候设值,时间复杂度O(1)
SETNX key value
PSETEX:设置的同时设置过期时间单位为毫秒,时间复杂度O(1)
PSETEX key milliseconds value
MSETNX:同时设置一个或多个,仅当key都不存在的时候,时间复杂度O(N)
MSETNX key value[key value。。。]
127.0.0.1:6379> setex x1 3 3miao
OK
127.0.0.1:6379> get x1
(nil)
127.0.0.1:6379> setnx x1 notexit
(integer) 1
127.0.0.1:6379> setnx x1 notexit2
(integer) 0
127.0.0.1:6379> get x1
"notexit"
127.0.0.1:6379> psetex x2 3000 haomiao
OK
127.0.0.1:6379> get x2
(nil)
127.0.0.1:6379> msetnx x3 xx3 x4 xx4 x5 xx5
(integer) 1
127.0.0.1:6379> msetnx x3 xxx3 x6 xx6
(integer) 0
127.0.0.1:6379>
STRLEN
STRLEN key:返回key所存储的字符串的长度,时间复杂度为O(1)
127.0.0.1:6379> get name
"lishong\x00\x00java"
127.0.0.1:6379> get name2
"\x00\x00\x00zhaoliu"
127.0.0.1:6379> strlen name
(integer) 13
127.0.0.1:6379> strlen name2
(integer) 10
127.0.0.1:6379>
APPEND
APPEND key value:在给定key的字符串的后面追加value,如果存在则是追加,不存在就相当于设置。
时间复杂度O(1)
127.0.0.1:6379> set app kugou
OK
127.0.0.1:6379> append app yinyue
(integer) 11
127.0.0.1:6379> get app
"kugouyinyue"
127.0.0.1:6379> append music love
(integer) 4
127.0.0.1:6379> get music
"love"
127.0.0.1:6379>
GETBIT/SETBIT/BITOP/BITPOS/BITCOUNT/BITFIELD
这些命令主要用来操作位。
Redis数据类型--string的更多相关文章
- redis数据类型[string 、list 、 set 、sorted set 、hash]
1. Keys redis本质上一个key-value db,所以我们首先来看看他的key. 首先key也是字符串类型,但是key中不能包括边界字符:由于key不是binary safe的字符串, ...
- 【Redis学习之四】Redis数据类型 string
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 redis-2.8.18 一.redis客户端基础命令1.帮 ...
- Redis 数据类型String 使用
字符串是Redis中最基本的数据类型,它能够存储任何类型的字符串,包含二进制数据.可以用于存储邮箱,JSON化的对象,甚至是一张图片,一个字符串允许存储的最大容量为512MB.字符串是其他四种类型的基 ...
- Redis数据类型String
set和get Set带空格的字符串值,这时候就需要使用双引号了,否则会出错 getset getset设置某个key-value,然后把设置之前的值返回来 incr,incrby 和 decr,de ...
- redis数据类型及使用场景
Redis数据类型 String: Strings 数据结构是简单的key-value类型,value其实不仅是String,也可以是数字. 常用命令: set,get,decr,incr,mge ...
- Redis 数据类型总结—String
1.1 数据类型 Redis常用五种数据类型:string, hash, list, set, zset(sorted set). Redis内部使用一个redisObject对象来 ...
- Redis学习-string数据类型
Redis 是一个开源的使用 ANSI C 语言编写.支持网络.可基于内存亦可持久化的日志 型.Key-Value 数据库. redis提供五种数据类型string,hash,list,set及sor ...
- Linux+Redis实战教程_day02_3、redis数据类型_4、String命令_5、hash命令_6、java操作redis数据库技术
3. redis数据类型[重点] redis 使用的是键值对保存数据.(map) key:全部都是字符串 value:有五种数据类型 Key名:自定义,key名不要过长,否则影响使用效率 Key名不要 ...
- 缓存数据库-redis数据类型和操作(string)
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合) 一:String(字符串) string是redis ...
随机推荐
- RTMP消息详细介绍
本文继上篇简单分析了RTMP协议如何进行通信进一步详细分析RTMP的消息都有哪些,以及这些消息有什么作用. 一.RMTP消息 由上一篇文章可知RTMP 消息有分成两个部分,一个是头部,一个是有效负载. ...
- 网络1711班 C语言第八次作业批改总结
网络1711班 C语言第七次作业批改总结 最近在忙一些琐事,没能及时批改大家的作业,连续两次作业总结也没有很用心写,在这要给大家say sorry. 1.本次作业评分细则 1.1 基本要求(1分) 按 ...
- C语言博客作业--嵌套循环
一.PTA实验作业 题目1:7-4 换硬币 2 .设计思路 第一步:定义3个整型变量i,j,k用于循环,定义3个整型变量x,count,total分别用于储存零钱数额,换法个数,硬币数量: 第二步:输 ...
- python实现朴素贝叶斯
参考:<机器学习实战>- Machine Learning in Action 一. 基本思想 简单的说,用概率的高低来决定数据属于哪一类别,这就是贝叶斯决策理论的核心思想,即选择具有最 ...
- 团队作业4——第一次项目冲刺(Alpha版本)11.14
a. 提供当天站立式会议照片一张 举行站立式会议,讨论项目安排: PM对整个项目的需求进行讲解: 全队对整个项目的细节进行沟通: 对整个项目的开发计划进行分析,分配每天的任务: 统一确定项目的开发环境 ...
- Junit 4 测试中使用定时任务操作
难度:测试中执行线程操作 package com.hfepc.job.dataCollection.test; import java.util.Date; import java.util.List ...
- vue初尝试--组件
github代码同步网址 组件 (Component) 是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素,Vue.js 的编译器为它添 ...
- datable转xml
/// <summary> /// datatable转换xml /// </summary> /// <param name="xmlDS"> ...
- WPS怎么让前几页的页眉或者页脚与后面的不同
其实不管利用WPS还是office对文档还是PPT进行操作,其实核心思想还是一种编程,主要是前端的编程,就是通过改变一些这些软件设置的样式,然后通过改变这些样式,使这些文字以老师要求的格式显示出来的, ...
- ( 转 ) WebApiTestClient 的使用
注意点:需要修改api路由规则,加上action: "api/{controller}/{action}/{id}" 1.如何引入组件 首先,我们需要定义一个API项目 然后通过N ...