Redis系列-存储篇string主要操作函数小结
通过上两篇的介绍,我们的redis服务器基本跑起来。db都具有最基本的CRUD功能,我们沿着这个脉络,开始学习redis丰富的数据结构之旅,当然先从最简单且常用的string开始。
1、新增
a)set
语法:set key value
解释:把值value赋给key,如果key不存在,新增;否则,更新
- [root@xsf001 ~]# redis-cli
- redis 127.0.0.1:6379> set user.1.name zhangsan #设置user.1.name 为zhangsan
- OK
- redis 127.0.0.1:6379> set user.name 45 #设置user.1.name 为45
- OK
b)setnx
语法:setnx key value
解释:只insert不update,即,仅仅key不存在时,则设置key的值为value,并返回1,否则返回0 。setnx 是set if not exists 的缩写
- redis 127.0.0.1:6379> setnx user.1.name zhangsan #user.1.name已经存在,则返回0
- (integer) 0
- redis 127.0.0.1:6379> setnx user.2.name zhangsan #user.2.name不存在,则设置
- (integer) 1
c)setex
语法: setex key seconds value
解释:设置key的过期时间和值。过期时间seconds单位是秒。设置过期时间和值是原子操作,如果redis仅仅当做缓存,这个很命令很有用。
- redis 127.0.0.1:6379> setex user.2.age 2 14 #把user.2.age 的值设14 并且2秒后过期失效
- OK
- redis 127.0.0.1:6379> get user.2.age #失效前
- "14"
- redis 127.0.0.1:6379> get user.2.age #失效后
- (nil)
d)mset
语法:mset key value [key value ...]
解释:同时设置多个key-value
- redis 127.0.0.1:6379> mset user.4.name lisi user.4.age 34 #设置user.4.name=lisi,user.4.age=34
- OK
- redis 127.0.0.1:6379> get user.4.name
- "lisi"
- redis 127.0.0.1:6379> get user.4.age
- "34"
e)msetnx
语法:msetnx key value [key value ...]
解释:所有key都不存在才执行set操作
- redis 127.0.0.1:6379> msetnx user.4.name lisi user.4.age 34 #key 都设置过,无法再次set
- (integer) 0
- redis 127.0.0.1:6379> msetnx user.4.name lisi user.4.std 3 #key user.4.name 曾设置过,无法再次设置
- (integer) 0
- redis 127.0.0.1:6379> msetnx user.4.tech lisi user.4.std 3 #key都没有设置过,可以再次设
- (integer) 1
2、查询
a)get
语法:get key
解释:获取key所set的值
- redis 127.0.0.1:6379> get user.4.name #获取user.4.name 的值
- "lisi"
- redis 127.0.0.1:6379> get user.4.age
- "34"
- redis 127.0.0.1:6379> get user.4.tech
- "lisi"
- redis 127.0.0.1:6379> get user.4.std
- "3"
b)mget
语法: get key [key]
解释:批量获取key的值。程序一次获取多个值,可以减少网络连接损耗。
- redis 127.0.0.1:6379> mget user.4.name user.4.age user.4.std #批量获取存在key的值
- 1) "lisi" #user.4.name的值
- 2) "34" #user.4.age 的值
- 3) "3" #user.4.std 的值
- redis 127.0.0.1:6379> mget user.4.name user.4.age user.4.std user.4.fri #key user.4.fri 不存在仍然可以返回
- 1) "lisi"
- 2) "34"
- 3) "3"
- 4) (nil) #user.4.fri 的值
c)getrange
语法:getrange key star end
解释:获取存储在key中value的字串。字符串的截取有star和end决定,字符串的第一个字符编号是0,第二个是1,一次类推;如果是负数,-1是最后一个字符,-2是倒数第二个字符,一次类推。
- redis 127.0.0.1:6379> get user.4.name
- "lisi"
- redis 127.0.0.1:6379> getrange user.4.name 0 3 # 0 表示开始
- "lisi"
- redis 127.0.0.1:6379> getrange user.4.name 1 2
- "is"
- redis 127.0.0.1:6379> getrange user.4.name 1 -2 #-2 表示倒数第二
- "is"
- redis 127.0.0.1:6379> getrange user.4.name -1 -2 # end 》 start
- ""
- redis 127.0.0.1:6379> getrange user.4.name 1 66 #end 》 值的长度
- "isi"
3、修改
a)getset
语法:getset key value
解释:设置key的值,并返回key的旧值。
- redis 127.0.0.1:6379> get user.4.name #存在的key
- "lisi"
- redis 127.0.0.1:6379> getset user.4.name wangwu #把存在的user.4.name设置为wagnwu
- "lisi"
- redis 127.0.0.1:6379> get user.4.name
- "wangwu"
- redis 127.0.0.1:6379> get user.5.name #不存在的key
- (nil)
- redis 127.0.0.1:6379> getset user.5.name lisi
- (nil)
- redis 127.0.0.1:6379> get user.5.name
- "lisi"
b) append
语法:append key value
解释:key存在,在旧值的后面追加value;key不存在,直接set
- redis 127.0.0.1:6379> get user.4.name #存在的key
- "wangwu"
- redis 127.0.0.1:6379> append user.4.name 01
- (integer) 8
- redis 127.0.0.1:6379> get user.4.name
- "wangwu01"
- redis 127.0.0.1:6379> get user.6.name #不能存在的key
- (nil)
- redis 127.0.0.1:6379> append user.6.name jim
- (integer) 3
- redis 127.0.0.1:6379> get user.6.name
- "jim"
c)setrange
语法:setrange key offset value
解释:用value重写key值的一部分,偏移量由offset指定
- redis 127.0.0.1:6379> get user.4.name #key存在
- "wangwu01"
- redis 127.0.0.1:6379> setrange user.4.name 0 lisi
- (integer) 8
- redis 127.0.0.1:6379> get user.4.name
- "lisiwu01"
- redis 127.0.0.1:6379> setrange user.4.name 9 lisi # offset 》字符串长度
- (integer) 13
- redis 127.0.0.1:6379> get user.4.name
- "lisiwu01\x00lisi"
- redis 127.0.0.1:6379> setrange user.4.name 8 lisi
- (integer) 13
- redis 127.0.0.1:6379> get user.4.name
- "lisiwu01lisii"
- redis 127.0.0.1:6379> get user.6.std #key 不存在
- (nil)
- redis 127.0.0.1:6379> setrange user.6.std 0 3
- (integer) 1
- redis 127.0.0.1:6379> get user.6.std
- "3"
d)incr
语法:incr key
解释:key中如果存储的是数字,则可以通过incr递增key的值,返回递增后的值。如果key不能存在,视为初始值为0
- redis 127.0.0.1:6379> get user.7.age #key不存在 ,初始值视为0,
- (nil)
- redis 127.0.0.1:6379> incr user.7.age
- (integer) 1
- redis 127.0.0.1:6379> get user.7.age
- "1"
- redis 127.0.0.1:6379> incr user.7.age
- (integer) 2
e)incrby
语法:incrby key increment
解释:用指定的步长增加key存储的数字。如果步长increment是负数,则减
- redis 127.0.0.1:6379> get user.7.age
- "3"
- redis 127.0.0.1:6379> incrby user.7.age 15 #增加15
- (integer) 18
- redis 127.0.0.1:6379> get user.7.age
- "18"
- redis 127.0.0.1:6379> incrby user.7.fri 18 #key不能存在,原值视为0
- (integer) 18
- redis 127.0.0.1:6379> get user.7.fri
- "18"
- redis 127.0.0.1:6379> incrby user.7.age -1 #步长为负
- (integer) 17
- redis 127.0.0.1:6379> get user.7.age
- "17"
f)decr
语法:decr key
解释:递减key保存的数字,如果key不存在,初始值视为0
- redis 127.0.0.1:6379> get user.7.age
- "17"
- redis 127.0.0.1:6379> decr user.7.age
- (integer) 16
- redis 127.0.0.1:6379> decr user.7.num #key 不存在,初始值视为0
- (integer) -1
- redis 127.0.0.1:6379> decr user.7.num
- (integer) -2
g)decrby
语法:decrby key decrement
解释:用指定的步长递减key的值,如果步长decrment是负值,则递增
- redis 127.0.0.1:6379> decrby user.7.num 4 #递减
- (integer) -6
- redis 127.0.0.1:6379> decrby user.7.num -9 #负值,递增
- (integer) 3
注意:递增递减系列的函数,只能对保存的是数字的key操作,不能是字符串
4)删除
语法:del key [key]
解释:删除指定的key,返回删除key的个数
- redis 127.0.0.1:6379> del user.7.num
- (integer) 1
- redis 127.0.0.1:6379> get user.7.num
- (nil)
- redis 127.0.0.1:6379> del user.7.age user.7.fri #删除多个key
- (integer) 2
- redis 127.0.0.1:6379> mget user.7.age user.7.fri
- 1) (nil)
- 2) (nil)
5)其他
语法:strlen key
解释:获取key中所存储值的长度
- redis 127.0.0.1:6379> get user.1.name
- "45"
- redis 127.0.0.1:6379> strlen user.1.name #user.1.name 长度
- (integer) 2
- redis 127.0.0.1:6379> strlen user.8.name #key不存在
- (integer) 0
通过上面的大量demo,对string的操作基本总结完毕。今天就到这里吧!
更多信息,请参考:http://redis.io/commands#string
Redis系列-存储篇string主要操作函数小结的更多相关文章
- Redis系列-存储篇hash主要操作函数小结
阳光透过玻璃,洒在身上,一杯暖茶在手,说不尽的安逸自得,让我有种想再写篇blog的冲动.上篇主要谈了string,这里谈谈hash吧!hash是一些列key value(field value)的映射 ...
- Redis系列-存储篇set主要操作函数小结
最近,总是以“太忙“为借口,很久没有blog了,凡事贵在恒,希望我能够坚持不懈,毕竟在blog的时候,也能提升自己.废话不说了,直奔主题”set“ redis set 是string类型对象的无序集合 ...
- Redis系列-存储篇list主要操作函数小结
在总结list之前,先要弄明白几个跟list相关的概念: 列表:一个从左到右的队列,个人理解更类似于一个栈,常规模式下,先进列表的元素,后出. 表头元素:列表最左端第一个元素. 表尾元素:列表最右端的 ...
- Redis系列-存储篇list主要操作函数小结(转)
在总结list之前,先要弄明白几个跟list相关的概念: 列表:一个从左到右的队列,个人理解更类似于一个栈,常规模式下,先进列表的元素,后出. 表头元素:列表最左端第一个元素. 表尾元素:列表最右端的 ...
- Redis系列-存储篇string主要操作命令
Redis系列-存储篇string主要操作命令 通过上两篇的介绍,我们的redis服务器基本跑起来.db都具有最基本的CRUD功能,我们沿着这个脉络,开始学习redis丰富的数据结构之旅,当然先从最简 ...
- Redis系列-存储篇sorted set主要操作命令
Redis系列-存储篇sorted set主要操作函数小结 redis支持有序集合,即sorted set.sorted set在set的基础上,增加了排序属性,是set的升级版.这里简要谈谈sort ...
- Redis系列-存储篇list主要操作命令
Redis系列-存储篇list主要操作命令小结 在总结list之前,先要弄明白几个跟list相关的概念: 列表:一个从左到右的队列,个人理解更类似于一个栈,常规模式下,先进列表的元素,后出. 表头元素 ...
- Redis系列-存储篇sorted set主要操作函数小结
redis支持有序集合,即sorted set.sorted set在set的基础上,增加了排序属性,是set的升级版.这里简要谈谈sorted set的常用函数: 1)insert a) zadd ...
- Redis系列-存储hash主要操作命令
Redis系列-存储篇hash主要操作函数小结 hash是一些列key value(field value)的映射表.常常用其存储一些对象实例.相对于把一个对象的各个字段存储为string,存储为ha ...
随机推荐
- Java中List Set Map 是否有序等总结
1.Collection List Set Map 区别记忆 这些都代表了Java中的集合,这里主要从其元素是否有序,是否可重复来进行区别记忆,以便恰当地使用,当然还存在同步方面的差异,见上一篇相关文 ...
- img、input到底是行内还是块级元素?
一.img.input属于行内替换元素.height/width/padding/margin均可用.效果等于块元素. 行内非替换元素,例如, height/width/padding to ...
- go循环
Go语言里的For循环语句 更多 0 golang package main import "fmt" func main() { sum := 0 for i := 0; i ...
- go-mysql
1.GO语言实现的简单TCP服务代码 package main import ( "net" "fmt" ) var ( maxRead = 1100 msgS ...
- maven 启动 报错 Fatal error compiling: 无效的目标发行版
http://news.tuxi.com.cn/news/119999990123162/31622105.html http://lyking2001.iteye.com/blog/837440 针 ...
- 使用JSPatch平台热修复iosApp
IOS产品开发中常常会遇到这种情况,线上发现一个严重bug,可能是一个crash,可能是一个功能无法使用,这时能做的只是赶紧修复Bug然后提交等待漫长的审核,即使申请加急也不会快到那里去,即使审核完了 ...
- word双栏排版,最后一页由于分节符造成最后一页是空白页,删除分节符双栏就变成了单栏
遇到这个问题时,我们把心思都花在了如何“删除”这个空白页. 但是最有效的办法不是“删除”,而是(以word2007为例): Word 2007中文版: 鼠标放在最后一页,点击页面布局①,选择页面布局右 ...
- css 颜色渐变
.top_nav { width: 100%; height: 29px; /* 如果浏览器不支持渐变,使用图像作为背景 */ background: u ...
- Java 数据类型之间的转换 拆分字符串 Date/Calendar的转换
数据类型转换 1. String - Int String str="123"; int i=1; int str=Integer.parseInt(str); String i= ...
- android打开,保存图片到sd卡,显示图片
1.打开根目录下test.jpg Bitmap bm = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory().getA ...