首页 / REDIS / Redis-字符串的相关操作
Redis-字符串的相关操作
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Redis-字符串的相关操作,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4448字,纯文字阅读大概需要7分钟。
内容图文
上篇文章中,已经介绍了Redis是什么,以及如何使用docker在服务器上安装redis,接下来看一下字符串在redis中是如何进行相关操作的。
先在服务器上用命令行连接上redis服务:
docker exec -it redis bash redis-cli -h 127.0.0.1 -p 6379
说明:一般redis默认的端口都是6379,-h可以理解为host的缩写,-p可以理解为端口port的缩写,这样比较容易记住命令,也可以输入redis-cli --help去查看命令的可选参数的含义。
Redis中针对字符串的基本操作
SET 为字符串键设置值
语法:set key value
可选参数 NX | XX
NX:只有在指定的键没有值的时候才会去设置
XX:对已有的值进行覆盖更新的时候用XX,如果key不存在,用这个会返回nil,gui工具上的命令行操作可能返回null。目前的版本不加参数默认是会覆盖更新,不确定以后是否会更改。
set name libo set wx xiaobotester set name zhangsan NX --name已经指定值,无法更新,会返回nil set name zhangsan XX --会将name的值更新 set a 123 XX -- 如果不存在key为a的数据,则这样使用会返回a 以上的nx和xx我在命令行试了不区分大小写
GET:获取字符串键的值
语法:get key
如果给定的key值在数据库中没匹配到对应的数据,就会返回空
get name get phone
GETSET:获取旧值并设置新值
首先获取字符串键目前已有的值,接着为键设置新值,最后把之前获取到的旧值返回给用户。
如果key本身不存在,则会创建key,然后写入新的值。
127.0.0.1:6379> get a "4" 127.0.0.1:6379> getset a 1 "4" 127.0.0.1:6379> get a "1" 127.0.0.1:6379> get f (nil) 127.0.0.1:6379> getset f 1 (nil) 127.0.0.1:6379> get f "1"
MSET:一次为多个字符串键设置值
语法:mset key1 value1 key2 value2 ...
mset name libo age 29 email none@qq.com
MGET:一次获取多个字符串键的值
语法:mget key1 key2 ... ,多个key用空格隔开
127.0.0.1:6379> mset name libo age 29 email none@qq.com OK 127.0.0.1:6379> mget name age email 1) "libo" 2) "29" 3) "none@qq.com" 127.0.0.1:6379>
MSETNX:只在键不存在的情况下,一次为多个字符串键设置值
语法:msetnx key1 value1 key2 value2 ...
MSETNX与MSET的主要区别在于,MSETNX只会在所有给定键都不存在的情况下对键进行设置,而不会像MSET那样直接覆盖键已有的值:如果在给定键当中,即使有一个键已经有值了,那么MSETNX命令也会放弃对所有给定键的设置操作。MSETNX命令在成功执行设置操作时返回1,在放弃执行设置操作时则返回0。
STRLEN:获取字符串值的字节长度
语法:STRLEN key
APPEND:追加新内容到值的末尾
语法:append key value
APPEND命令在执行追加操作之后,会返回字符串值当前的长度作为命令的返回值。
Redis中针对字符串以索引的方式进行操作
字符串值的正数索引以0为开始,从字符串的开头向结尾不断递增。
字符串值的负数索引以-1为开始,从字符串的结尾向开头不断递减。
GETRANGE:获取字符串值指定索引范围上的内容
getrange key start end
127.0.0.1:6379> set str abcdefghijklmnopqrstuvwxyz OK 127.0.0.1:6379> getrange str 0 6 "abcdefg" 127.0.0.1:6379> getrange str -7 -1 "tuvwxyz"
SETRANGE:对字符串值的指定索引范围进行设置
语法:setrange key index string
将字符串键的值从索引index开始的部分替换为指定的新内容,被替换内容的长度取决于新内容的长度,命令执行完之后,会返回字符串值当前的长度作为结果。
127.0.0.1:6379> get str "abcdefghijklmnopqrstuvwxyz" 127.0.0.1:6379> setrange str 7 17665367850 (integer) 26 127.0.0.1:6379> get str "abcdefg17665367850stuvwxyz"
当输入的索引值比字符串的总长度大,或者说替换之后的新内容的长度超过原来字符串长度的时候,会自动扩展长度保证值可以写入。
写在最后
那作为测试人员,学redis的这些基本操作到底有没有用呢?
答案当然是有用的。有些数据可能是存在redis的,当你想快速验证某个场景,找数据比较麻烦的时候,除了用mock,就可以自己去改redis里面的数据,验证页面显示的效果是否同步发生变化。
那一般用命令行操作还是GUI工具去操作比较好呢?
建议先熟悉一下命令行的操作,再考虑用GUI的工具,毕竟GUI工具打开占用的内存什么的要多一些,而且有的服务可能不能直连,在登录服务器后,用命令行操作会方便一点。
这么多的命令,需要一个个去记吗?
不需要全部记住这么多命令,但是最起码要知道通过命令行可以做一些什么事情,要知道个大概,其实这些命令也比较好记,一般set和get是配套使用的,一个用来设置值,一个用来取值,前缀加m表示可批量操作,剩下的一些命令在用的时候查查资料也行,前提是要知道可以用来干什么事情,在需要的才知道
在自己购买的阿里云或者腾讯云之类的服务器上搭建redis的时候,要记得在安全组里面开启端口防火墙,而且数据库记得要设置密码,否则就会出现像下面的情况:(之前没有设置密码,也没有改默认端口,可能被人***了)
针对这个情况,我更改了一下docker启动redis的命令:
docker run -itd --name redis -p 映射到服务器对外暴露的端口:6379 -v /root/docker_volume/redis/data:/data redis --requirepass 这里填入为数据库设置的密码 --appendonly yes
1、加入了映射数据卷,以及数据持久化的参数,可以把数据映射到服务器的目录,至于为什么要加这些参数,有什么好处,可以自己思考/百度一下
2、设置了密码,没这么容易被破解,容器内部的话还是用6379端口去连接就行:
redis-cli -h 127.0.0.1 -p 6379 -a 密码
内容总结
以上是互联网集市为您收集整理的Redis-字符串的相关操作全部内容,希望文章能够帮你解决Redis-字符串的相关操作所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。