NoSQL数据库Redis之莫问剑(String类型)的修炼

编程之家收集整理的这篇文章主要介绍了NoSQL数据库Redis之莫问剑(String类型)的修炼编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Redis数据库是基于

内存的数据库,速度极快,那今天我们来看看这种超级牛X的数据库的操作使用方法,还记得我上文提过的
Redis的七种数据类型吧,我们这里把它称之为Redis七剑下天山,即为:莫问剑,游龙剑,青干剑,舍神剑,

天瀑剑,日月剑,竞星剑
现在,为师来分别传授给大家每一把剑的奥妙及使用方法
首先我们来启动Redis的客户端,启动Redis客户端的命令我们使用src/redis-cli命令启动,即可进入Redis的
shell客户端,一切准备就绪,咱们开始学习这七把剑....
第一把----------------------莫问剑String类型
介绍:String是最简单的类型,你可以理解成与Memcached是一模一样的类型,一个Key对应一个Value,目前

你可以完全实现Memcached的功能,而且效率要比Memcached高很多,同时可以设置Redis的定时数据持久
化,操作日志的记录以及主从复制等功能
技能:
1.set
设置Key对应的值为string类型的value。
例如我来设置一个name = MoWenJian 的键值对,可以这样做:
[root@localhost src]# /usr/local/redis/src/redis-cli
redis 127.0.0.1:6379> set name MoWenJian
OK
redis 127.0.0.1:6379>

2.setnx
设置key 对应的值为string 类型的value。如果key 已经存在,返回0,nx 是not exist 的意思。
例如我们添加一个name= MoWenJian_New 的键值对,可以这样做:
redis 127.0.0.1:6379> get name
"
MoWenJian"
redis 127.0.0.1:6379> setnx name
MoWenJian_New
(integer) 0
redis 127.0.0.1:6379> get name
"
MoWenJian_New"
redis 127.0.0.1:6379>

由于原来name 有一个对应的值,所以本次的修改不生效,且返回码是0。
3.setex
设置一个键对应的值,并对此键值对设置一个有效期。
例如:我们指定一个键值对 lampbrother = success,并且设置一个有效期为10秒,我们来这样做:
redis 127.0.0.1:6379> set lampbrother 10 success
OK
redis 127.0.0.1:6379> get lampbrother

"success"
redis 127.0.0.1:6379> get
lampbrother
(nil)
redis 127.0.0.1:6379>


由于第二次调用已经超过10秒,所以无法取到lampbrother的值了!!!
4.setrange
设置指定键的值的子字符串。
例如:我现在要把 jiege 的邮箱 lijie@ li-jie.me 改为lijie@lampbrother.net
redis 127.0.0.1:6379> get jiege
"lijie@li-jie.me"
redis 127.0.0.1:6379> setrange jiege 6
lampbrother.net
(integer) 21
redis 127.0.0.1:6379> get
lampbrother
"lijie@lampbrother.net"
redis 127.0.0.1:6379>

5.mset
同时设置多个键值对,成功返回ok表示所有键设置成功,失败则返回0表示所有键设置都不成功
例如:我们同时设置 李文凯 的多个爱好:
redis 127.0.0.1:6379> mset hobby1 smoke hobby2 beer hobby3 girl
OK
redis 127.0.0.1:6379> get hobby1

"smoke"
redis 127.0.0.1:6379> get
hobby3
"girl"
redis 127.0.0.1:6379>

6.msetnx
同时设置多个键值对,同样失败返回0表示所有键都没有设置成功,成功返回OK表示所有键都设置成功,但
不同于mset的是本方法不会设置已经存在的键值对!
redis 127.0.0.1:6379> get hobby1
"smoke"
redis 127.0.0.1:6379> get
hobby3
"girl"
redis 127.0.0.1:6379> msetnx hobby1 chouyan hobby4 hejiu
(integer) 0
redis 127.0.0.1:6379> gethobby4
(nil)
redis 127.0.0.1:6379> gethobby3
"girl"
可以看出如果这条命令返回0,那么里面操作都会回滚,都不会被执行。
7.get
获取某个键对应的值,如果不存在则返回 nil
redis 127.0.0.1:6379> gethobby4
(nil)
redis 127.0.0.1:6379> gethobby3
"girl"
如上例,hobby3存在,并且值为"girl",hobby4不存在,则返回 nil
8.getset
设置某一个键的值,并且返回该键的旧值,如果该键不存在,则返回 nil,然后再设置新的值
例如:
redis 127.0.0.1:6379> getsethobby4 football
(nil)
redis 127.0.0.1:6379> getsethobby3 basketball
"girl"
redis 127.0.0.1:6379> gethobby4
"football"
redis 127.0.0.1:6379> gethobby3
"basketball"
9.getrange
获取指定键的值的子字符串
redis 127.0.0.1:6379> getrange jiege 0 4
"lijie"
redis 127.0.0.1:6379> getrange jiege -15 -1
"lampbrother.net"
redis 127.0.0.1:6379> getrange jiege 0 100
"lijie@lampbrother.net"
上例中, getrange jiege 0 4表示获取 jiege 这个键的值的下标为 0~4 的所有字符


同样, getrange jiege -15 -1表示获取 jiege 这个键的值的下标从后数第15个到最后一个的所有字符
getrange jiege 0 100则表示全部输出 jiege 这个键的值的所有字符,因为最后一个字符的下标 小于 100,
当下标超出字符串长度时,将默认为是同方向的最大下标。
10.mget
一次性获取多个键的值,如果键不存在,则返回 nil
redis 127.0.0.1:6379> mget hobby1 hobby2 hobby5
1) "smoke"
2) "beer"
3) (nil)
redis 127.0.0.1:6379>
hobby5不存在,所以返回nil。
11.incr
对一个键的值做加加操作,并返回新的值,如果该键的值类型不是int类型,将会报错,如果该键不存在,则设置该键为1
redis 127.0.0.1:6379> set age 20
OK
redis 127.0.0.1:6379> incr age
(integer) 21
redis 127.0.0.1:6379> get age
"21"
redis 127.0.0.1:6379> get age1
(nil)
redis 127.0.0.1:6379> incr age1
(integer) 1
redis 127.0.0.1:6379> get age1
"1"
12.incrby
类似于incr,但是incrby可以指定增加的值
redis 127.0.0.1:6379> incrby age 5
(integer) 26
redis 127.0.0.1:6379> get age
"26"
redis 127.0.0.1:6379>incrby age -1
(integer) 25
redis 127.0.0.1:6379> get age

"25"
大家可以看到,5代表给age键增加5,而-1表示给age键减1,即正数为加,负数为减
13.decr
对某一个键做减减操作,同incr
redis 127.0.0.1:6379> set age 20
OK
redis 127.0.0.1:6379> decr age
(integer) 19
redis 127.0.0.1:6379> get age
"19"
redis 127.0.0.1:6379> get age1
(nil)
redis 127.0.0.1:6379> decr age1
(integer) -1
redis 127.0.0.1:6379> get age1
"-1"
14.decrby
同incrby,给某一键减去指定的值
redis 127.0.0.1:6379> decrby age 5
(integer) 14
redis 127.0.0.1:6379> get age
"14"

decrby 完全是为了可读性,我们完全可以通过incrby 一个负值来实现同样效果,反之一样。
15.append
给指定key 的字符串值追加value,返回新字符串值的长度。
redis 127.0.0.1:6379> set name lijie
OK
redis 127.0.0.1:6379> get name
"lijie"
redis 127.0.0.1:6379> append name
@li-jie.me
(integer) 15
redis 127.0.0.1:6379> get name
"lijie@li-jie.me"

16.strlen
取指定key 的value 值的长度。
redis 127.0.0.1:6379> get name
"lijie@li-jie.me"
redis 127.0.0.1:6379> strlen name
(integer) 15
redis 127.0.0.1:6379> get age

"20"
redis 127.0.0.1:6379>strlenage
(integer) 2
好了,这就是我们的莫问剑(String类型)的所有技能,为师已经传授给各位,不知各位能否深刻领悟,
如有无法体悟之处,请跟帖回复,切勿自行闭门修炼,以免走火入魔
今天咱们就练到这里,下文将给大家详细介绍Redis的第二把剑--------- 游龙剑( hashes 类型 )的操作,敬请期待!!!

总结

以上是编程之家为你收集整理的NoSQL数据库Redis之莫问剑(String类型)的修炼全部内容,希望文章能够帮你解决NoSQL数据库Redis之莫问剑(String类型)的修炼所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢寻找一群志同道合、互帮互助的学习伙伴,可以点击下方链接加入:
编程之家官方1群
编程之家官方2群
编程之家官方3群
编程之家官方4群

相关文章

猜你在找的NoSQL相关文章

一、引言 学习redis 也有一段时间了,该接触的也差不多了。后来有一天,以前的同事问我,如何向redis中批量的增加数据,肯定是大批量的,为了这主题,我又重新找起了解决方案。目前的解决方案大都是从官
一、引言 上一篇文章,我介绍了如何在Linux系统上安装和配置MongoDB,其实都不是很难,不需要安装和编译,省去了Make && Make Install 命令的使用。我们既然介绍
一、引言 redis学了一段时间了,基本的东西都没问题了。从今天开始讲写一些redis和lua脚本的相关的东西,lua这个脚本是一个好东西,可以运行在任何平台上,也可以嵌入到大多数语言当中,来扩展其功
一、介绍 今天继续redis-cli使用的介绍,上一篇文章写了一部分,写到第9个小节,今天就来完成第二部分。话不多说,开始我们今天的讲解。如果要想看第一篇文章,地址如下:http://www.cnbl
一、介绍 redis学了有一段时间了,以前都是看视频,看教程,很少看官方的东西。现在redis的东西要看的都差不多看完了。网上的东西也不多了。剩下来就看看官网的东西吧,一遍翻译,一遍测试。不错的使用体
一、引言 好久没有写东西了,MongoDB系列的文章也丢下好长时间了。今天终于有时间了,就写了一篇有关索引的文章。一说到“索引”,用过关系型数据库的人都应该知道它是一个什么东西。当我们要访问的数据量大
一、引言 写完上一篇有关redis使用lua脚本的文章,就有意结束Redis这个系列的文章了,当然了,这里的结束只是我这个系列的结束,但是要学的东西还有很多。但是,好多天过去了,总是感觉好像还缺点什么
一、引言 上一篇文章我们一步一步的教大家搭建了Redis的Cluster集群环境,形成了3个主节点和3个从节点的Cluster的环境。当然,大家可以使用 Cluster info 命令查看Cluste
微信公众号搜索 “ 程序精选 ” ,选择关注!
微信公众号搜 "程序精选"关注