【捷哥浅谈PHP】第十八弹---NoSQL数据库Redis之莫问剑(String类型)的修炼

本文主要是介绍【捷哥浅谈PHP】第十八弹---NoSQL数据库Redis之莫问剑(String类型)的修炼,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

上文我给大家详细介绍了Redis数据库以及它的安装过程,及适用场景,上文我们说了,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> get hobby4
(nil)
redis 127.0.0.1:6379> get hobby3
"girl"



可以看出如果这条命令返回0,那么里面操作都会回滚,都不会被执行。


7.get


获取某个键对应的值,如果不存在则返回 nil


redis 127.0.0.1:6379> get hobby4
(nil)
redis 127.0.0.1:6379> get hobby3
"girl"



如上例,hobby3存在,并且值为"girl",hobby4不存在,则返回 nil


8.getset


设置某一个键的值,并且返回该键的旧值,如果该键不存在,则返回 nil,然后再设置新的值


例如:


redis 127.0.0.1:6379> getset hobby4 football
(nil)
redis 127.0.0.1:6379> getset hobby3 basketball
"girl"
redis 127.0.0.1:6379> get hobby4
"football"
redis 127.0.0.1:6379> get hobby3
"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> strlen age
(integer) 2




好了,这就是我们的莫问剑(String类型)的所有技能,为师已经传授给各位,不知各位能否深刻领悟,


如有无法体悟之处,请跟帖回复,切勿自行闭门修炼,以免走火入魔


今天咱们就练到这里,下文将给大家详细介绍Redis的第二把剑---------游龙剑(hashes 类型)的操作,敬请期待!!!

原文地址:http://bbs.lampbrother.net/read-htm-tid-122275.html

<script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=3&lang=zh"></script> <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/bshareC0.js"></script>
阅读(49) | 评论(0) | 转发(0) |
0

上一篇:【分享】DolrPHP模板引擎DolrViews分享

下一篇:项目心得

相关热门文章
  • 《数字技术与应用》征稿**投稿...
  • 关于分库分表(Mysql篇)
  • 数据库性能监控工具ORATOP...
  • 欢迎shuziliang在ChinaUnix博...
  • PHP程序员战地日记
  • 毕业五年(续)
  • 毕业五年
  • 职业生涯规划
  • 中国软件开发工程师之痛...
  • 闲置书处理!
  • 大家都是用什么来管理hadoop集...
  • 网站被人挂了吗,添加了些程序...
  • Nginx如何保证不走宕机的那个...
  • 大家谈谈MYSQL客户端和服务器...
  • 以下代码运行后为何会输出5?...
给主人留下些什么吧!~~
评论热议

这篇关于【捷哥浅谈PHP】第十八弹---NoSQL数据库Redis之莫问剑(String类型)的修炼的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1074268

相关文章

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

MySQL数据库宕机,启动不起来,教你一招搞定!

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG、Mongodb数据库运维(如安装迁移,性能优化、故障应急处理等)公众号:老苏畅谈运维欢迎关注本人公众号,更多精彩与您分享。 MySQL数据库宕机,数据页损坏问题,启动不起来,该如何排查和解决,本文将为你说明具体的排查过程。 查看MySQL error日志 查看 MySQL error日志,排查哪个表(表空间

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

浅谈主机加固,六种有效的主机加固方法

在数字化时代,数据的价值不言而喻,但随之而来的安全威胁也日益严峻。从勒索病毒到内部泄露,企业的数据安全面临着前所未有的挑战。为了应对这些挑战,一种全新的主机加固解决方案应运而生。 MCK主机加固解决方案,采用先进的安全容器中间件技术,构建起一套内核级的纵深立体防护体系。这一体系突破了传统安全防护的局限,即使在管理员权限被恶意利用的情况下,也能确保服务器的安全稳定运行。 普适主机加固措施:

自定义类型:结构体(续)

目录 一. 结构体的内存对齐 1.1 为什么存在内存对齐? 1.2 修改默认对齐数 二. 结构体传参 三. 结构体实现位段 一. 结构体的内存对齐 在前面的文章里我们已经讲过一部分的内存对齐的知识,并举出了两个例子,我们再举出两个例子继续说明: struct S3{double a;int b;char c;};int mian(){printf("%zd\n",s

【编程底层思考】垃圾收集机制,GC算法,垃圾收集器类型概述

Java的垃圾收集(Garbage Collection,GC)机制是Java语言的一大特色,它负责自动管理内存的回收,释放不再使用的对象所占用的内存。以下是对Java垃圾收集机制的详细介绍: 一、垃圾收集机制概述: 对象存活判断:垃圾收集器定期检查堆内存中的对象,判断哪些对象是“垃圾”,即不再被任何引用链直接或间接引用的对象。内存回收:将判断为垃圾的对象占用的内存进行回收,以便重新使用。

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0

两个月冲刺软考——访问位与修改位的题型(淘汰哪一页);内聚的类型;关于码制的知识点;地址映射的相关内容

1.访问位与修改位的题型(淘汰哪一页) 访问位:为1时表示在内存期间被访问过,为0时表示未被访问;修改位:为1时表示该页面自从被装入内存后被修改过,为0时表示未修改过。 置换页面时,最先置换访问位和修改位为00的,其次是01(没被访问但被修改过)的,之后是10(被访问了但没被修改过),最后是11。 2.内聚的类型 功能内聚:完成一个单一功能,各个部分协同工作,缺一不可。 顺序内聚:

深入理解数据库的 4NF:多值依赖与消除数据异常

在数据库设计中, "范式" 是一个常常被提到的重要概念。许多初学者在学习数据库设计时,经常听到第一范式(1NF)、第二范式(2NF)、第三范式(3NF)以及 BCNF(Boyce-Codd范式)。这些范式都旨在通过消除数据冗余和异常来优化数据库结构。然而,当我们谈到 4NF(第四范式)时,事情变得更加复杂。本文将带你深入了解 多值依赖 和 4NF,帮助你在数据库设计中消除更高级别的异常。 什么是

Mysql BLOB类型介绍

BLOB类型的字段用于存储二进制数据 在MySQL中,BLOB类型,包括:TinyBlob、Blob、MediumBlob、LongBlob,这几个类型之间的唯一区别是在存储的大小不同。 TinyBlob 最大 255 Blob 最大 65K MediumBlob 最大 16M LongBlob 最大 4G