文档章节

redis操作数据-strings

wangma
 wangma
发布于 2014/10/20 22:09
字数 821
阅读 54
收藏 0

一.string数据类型操作

  1.插入数据key为name ,value为tonva
127.0.0.1:6379> set name tonva                                         
OK

  2.查询key为name的数据
127.0.0.1:6379> get name                                                    
"tonva"

  3.删除key为name的数据
127.0.0.1:6379> del name                                                   
(integer) 1

  4.验证key为name的是否存在,0表示不存在
127.0.0.1:6379> exists name                                                
(integer) 0

  5.setnx就是set not exist,如果不存在key为name的值,那么就进行设置
127.0.0.1:6379> setnx name huage                                   
(integer) 0

  6.设置key为name的value为tonva,而且过期时间为10s
127.0.0.1:6379> setex name 10 tonva
OK

    过10s后可以发现,不能获取到key为name的value了,因为已经过期了

127.0.0.1:6379> get name
(nil)

  7.使用setrange将值替换,下面就是将tonva@qq.com从@后面,也就是第6个开始(从0开始),替换成gmail.com
127.0.0.1:6379> set name tonva@qq.com
OK
127.0.0.1:6379> setrange name 6 gmail.com
(integer) 15
127.0.0.1:6379> get name
"tonva@gmail.com"

  8.使用mset设置多个key的值,成功返回ok,失败返回0表示没有任何值被设置
127.0.0.1:6379> mset username tonva password 451989
OK
127.0.0.1:6379> get password
"451989"
127.0.0.1:6379> get username
"tonva"

  9.使用msetnx设置多个key的值,成功返回ok,失败返回0表示没有任何值被设置,如果存在key被设置了,那么不会再设置
127.0.0.1:6379> msetnx username tonva password 451989
(integer) 0

  如果我在加一个key是sex的那么如下,可以发现还是不能设置,因此可以知道只要有一个是存在的,那么整条命令就是插入失败

127.0.0.1:6379> msetnx username tonva sex 男
(integer) 0
127.0.0.1:6379> msetnx sex 男
(integer) 1

 10.getset设置新的值,并返回旧的值
127.0.0.1:6379> get name
"tonva@gmail.com"
127.0.0.1:6379> getset name tonva@qq.com
"tonva@gmail.com"
127.0.0.1:6379> get name
"tonva@qq.com"

 11.getrange,获取指定key的value的子字符串
127.0.0.1:6379> getrange name 0 8
"tonva@qq."

  下面可以发现,如果是负数,那么从右边开始获取,而且右边开始索引是从-1开始的

127.0.0.1:6379> getrange name -7 -1
"@qq.com"

   如果操作最大范围那么就会取最大值

127.0.0.1:6379> getrange name -100 -1
"tonva@qq.com"
127.0.0.1:6379> getrange name 0 100
"tonva@qq.com"
127.0.0.1:6379> getrange name 90 100
""

 12.mget,一次获取多个key,如果key不存在那么返回nil
127.0.0.1:6379> mget name username password sex
1) "tonva@qq.com"
2) "tonva"
3) "451989"
4) (nil)

 13.incr 对key的值进行自增操作,要注意key对应的值是整数,否则报错,而且incr一个不存在的值那么key为默认1
127.0.0.1:6379> set age 23
OK
127.0.0.1:6379> incr age
(integer) 24
127.0.0.1:6379> del age
(integer) 1
127.0.0.1:6379> incr age
(integer) 1

 14.incrby 同 incr 类似,加指定值 ,key 不存在时候会设置 key,并认为原来的 value 是 0
127.0.0.1:6379> get age
"1"
127.0.0.1:6379> incrby age 5
(integer) 6

 15.decr 对 key 的值做的是减减操作,decr 一个不存在 key,则设置 key 为-1
127.0.0.1:6379> decr age 
(integer) 5
127.0.0.1:6379> decr age
(integer) -1

 16.decrby 同incrby一样指定减少一个数值,因此可以使用incrby来增加一个负数完全可以达到效果
127.0.0.1:6379> decrby age 3
(integer) -4

 17.append给指定的value后面添加字符串
127.0.0.1:6379> get name
"tonva@qq.com"
127.0.0.1:6379> append name ,hello
(integer) 18
127.0.0.1:6379> get name
"tonva@qq.com,hello"

 18.strlen,取指定 key 的 value 值的长度。
127.0.0.1:6379> strlen name
(integer) 18



© 著作权归作者所有

共有 人打赏支持
wangma
粉丝 8
博文 46
码字总数 29223
作品 0
深圳
后端工程师
私信 提问
【原创】自己动手写一个能操作redis的客户端

引言 redis大家在项目中经常会使用到。官网也提供了多语言的客户端供大家操作redis,如下图所示 但是,大家有思考过,这些语言操作redis背后的原理么?其实,某些大神会说 只要按照redis的协议...

孤独烟
2018/07/23
0
0
Redis总结

一、基本概念 redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。 特点: Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。 ...

冰-冰
2016/08/30
50
0
Redis 之七种武器

长生剑、孔雀翎、碧玉刀、多情环、离别钩、霸王枪、拳头是古龙笔下的七种武器,而本文打算将Redis的几种使用方式 Strings、Hashs、Lists、Sets、Sorted Sets、Pub/Sub、Transactions 也比作七...

红薯
2011/08/29
1K
1
Redis进阶实践之十七 Redis协议的规范

Redis进阶实践之十七 Redis协议的规范 一、介绍 Redis客户端使用RESP(Redis的序列化协议)协议与Redis的服务器端进行通信。 虽然该协议是专门为Redis设计的,但是该协议也可以用于其他 客户...

morpheusWB
2018/09/13
0
0
Redis的七种特性及其适合的应用场景

Strings、Hashs、Lists、Sets、Sorted Sets、Pub/Sub、Transactions Strings 数据结构是简单的key-value类型,value其实不仅是String,也可以是数字。使用Strings类型,你可以完全实现目 前 ...

夕阳红树林
2012/06/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

rabbitmq

灰暗
27分钟前
0
0
Flink

flink HA部署 flink搭建,采用分布式部署方式,分别为A,B,C三个节点。其中A为master;A,B,C为worker。 本文使用的用户是hadoop用户(自己新建) 先决条件 Java 1.8.x or higher scala 自己使用...

-九天-
54分钟前
2
0
数据中台和传统数仓的区别

中台系统把业务层同性的算法能力,服务能力,业务能力高度集成,有效组织 ,动态规划。更好的帮助上层业务。 今天就让我们看看关于数据中台的问答吧。 1 Q : 什么是数据中台? A : 数据中台是...

hblt-j
56分钟前
4
0
Java在什么时候会出现内存泄漏

在Java中,内存泄漏就是存在一些被分配的对象,这些对象有下面两个特点,首先,这些对象是可达的,即在有向图中,存在通路可以与其相连;其次,这些对象是无用的,即程序以后不会再使用这些对...

群星纪元
59分钟前
2
0
android 打开摄像头

private SurfaceHolder mHolder; private SurfaceView mSurfaceView; private Camera mCamera; mSurfaceView = (SurfaceView) this.findViewById(R.id.camsurfaceView1); mHolder = mSurface......

jingshishengxu
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部