redis 字符串创建SET操作

127.0.0.1:6379> set number "10086"
OK
127.0.0.1:6379> set book "the design and lmplementation edis"
OK

 redis 字符串值改变覆盖操作;对一个已经设置了值得字符串再执行SET命令时将导致键的旧值会被新值覆盖

127.0.0.1:6379> set cx rd
OK
127.0.0.1:6379> set cx fd
OK

  在执行第二遍的时键的值将从rd变成fd;redis 2.6.12版本开始。用户可以通过SET 命令提供可选参数NX (不覆盖已存在的,不存在自动创建)选项或者XX(覆盖已存在的,但键不存在时不会自动创建)选择来指示SET命令是否覆盖已存在的值

127.0.0.1:6379> set key value [NX|XX]

  示例存在不覆盖

127.0.0.1:6379> set cx hh NX
(nil)

  存在覆盖操作

127.0.0.1:6379> set cx hh XX
OK

  不存在提示nil

127.0.0.1:6379> set st hg XX
(nil)

  不存在创建

127.0.0.1:6379> set st hg NX
OK

  redis 获取字符串GET操作

127.0.0.1:6379> GET key

   get 命令接受一个字符串键作为参数,然后返回该键相关的值

127.0.0.1:6379> get cx
"hh"
127.0.0.1:6379> get book
"the design and lmplementation edis"

  如果用户给定的字符串键在数据库中并没有相关的值。那么Get命令将返回一个空值

127.0.0.1:6379> get data
(nil)

  获取旧值并更新新值GETSET

getset命令就像get与set的组合版本,getset命令首先获取字符串键哦已有的值,接着为键设置新值,最后吧之前就值返回给用户

127.0.0.1:6379> GETSET key value

  用GETSET获取cx旧值并为它设置新值

127.0.0.1:6379> get st
"hg"
127.0.0.1:6379> getset cx "18501207824"
"hh"
127.0.0.1:6379> get cx
"18501207824"

  如果被设置的键不存在于数据库,那么getset命令将返回空作为键的旧值

127.0.0.1:6379> get qwe
(nil)
127.0.0.1:6379> getset qwe "123456"
(nil)
127.0.0.1:6379> get qwe
"123456"

  mset 一次为多个字符串设置值

    除了SET和getset命令之外。redis还提供了mset命令用于对字符串进行设置。与set和getset命令只能设置单个字符串不同,mset命令可以一次为多个字符串设置值

[root@maseter ~]# redis-cli
127.0.0.1:6379> mset key value [key valkue ...] [

  同时设置rd 、rs 、rc三个值。

127.0.0.1:6379> mset rd "52" rc "58" rs "78"
OK
127.0.0.1:6379> get rd
"52"
127.0.0.1:6379> get rc
"58"
127.0.0.1:6379> get rs
"78"

  此外如果给定字符串已经存在有相关的值,那么Mset  命令也会使用新值覆盖已经存在的旧值,使用mset覆盖rc的旧值

127.0.0.1:6379> mset rd "52" rc "18501207824" rs "78"
OK
127.0.0.1:6379> get rc
"18501207824"

  mget 一次获取多个字符串键的值

mget 命令就是一个多键版本的get命令,mget接受一个或多个字符串键作为参数,并返回这些的值

127.0.0.1:6379> mget key [key ...]

  获取多个值

127.0.0.1:6379> mget rd rc rs qwe
1) "52"
2) "18501207824"
3) "78"
4) "123456"
127.0.0.1:6379> mget kl 不存在报空
1) (nil)

  msetnx只在键不存在时,一次为多个字符串赋值

msetnx与mset命令一样都可以对多个字符串进行设置

127.0.0.1:6379> msetnx key value [key value ...] [key

  msetnx 给多个字符串设置值

127.0.0.1:6379> msetnx as "1658" df "854" cv "8582"
(integer) 1

  msetnx 给多个字符串设置值,有一个值存在,整体不执行

127.0.0.1:6379> set p1 "4"
OK
127.0.0.1:6379> mget p1 p2 p3 p4 p5 p6
1) "4"
2) (nil)
3) (nil)
4) (nil)
5) (nil)
6) (nil)
127.0.0.1:6379> msetnx p1 "12" p2 "23" p3 "67" p4 "45" p5 "69" p6 "43"
(integer) 0
127.0.0.1:6379> mget p1 p2 p3 p4 p5 p6
1) "4"
2) (nil)
3) (nil)
4) (nil)
5) (nil)
6) (nil)

  msetnx 给多个字符串设置值

127.0.0.1:6379> msetnx  p2 "23" p3 "67" p4 "45" p5 "69" p6 "43"
(integer) 1
127.0.0.1:6379> mget p1 p2 p3 p4 p5 p6
1) "4"
2) "23"
3) "67"
4) "45"
5) "69"
6) "43"

  sterlen:获取字符串值得字节长度

127.0.0.1:6379> set ol "qweriptfcxc"
OK
127.0.0.1:6379> strlen ol
(integer) 11

  如果不存在将返回0

127.0.0.1:6379> strlen oi
(integer) 0

    字符串索引;获取字符串指定索引范围getrange

通过使用getrange命令,用户可以获取字符串值从start索引开始,到end索引结束

127.0.0.1:6379> set re "hellp world"
OK
127.0.0.1:6379> get re
"hellp world"
127.0.0.1:6379> getrange re 3 7
"lp wo"
127.0.0.1:6379> getrange re 0 4
"hellp"
127.0.0.1:6379> getrange re -11 -7
"hellp"

  对字符串值的指定索引范围进行设置setrange,一个一个字符替换

127.0.0.1:6379> get re
"hellp world"
127.0.0.1:6379> setrange re 6 Redis 6表示从哪个字符开始替换
(integer) 11
127.0.0.1:6379> get re
"hellp Redis"

  自动扩展被修改的字符串;当用户给定的新内容比被替换的内容更长时,setrange命令就会自动扩展被修改的字符串,从而保证新内容顺利写入

127.0.0.1:6379> get re
"hellp Redis"
127.0.0.1:6379> setrange re 6 ", this is a massage send from peter."
(integer) 42
127.0.0.1:6379> get re
"hellp , this is a massage send from peter."

  在值内填充空字节;setrange除了会根据用户给定的新内容自动扩展字符串,还会根据用户给定的index索引扩展字符串,当用户给定的index索引超出字符串长度时,字符串值末尾直到索引index-1之间的部位将用空白字节填充,换句话这些字节的所有二进制位会被设置0

127.0.0.1:6379> set gf "hello"
OK
127.0.0.1:6379> get gf
"hello"
127.0.0.1:6379> setrange gf 10 world
(integer) 15
127.0.0.1:6379> get gf
"hello\x00\x00\x00\x00\x00world"

  append 追加内容到值末尾

127.0.0.1:6379> append key suffix

  append 在执行追加操作后,会返回字符串值当前的长度作为返回值

127.0.0.1:6379> get ch
"redis"
127.0.0.1:6379> append ch " is a database"
(integer) 19
127.0.0.1:6379> get ch
"redis is a database"

  处理不存在的键时;如果用户给定的键不存在,那么append命令会将键的值初始为空字符串,然后再追加操作,最终结果与set命令为键设置值很像

127.0.0.1:6379> get tu
(nil)
127.0.0.1:6379> append tu "1854358"
(integer) 7
127.0.0.1:6379> get tu
"1854358"

  使用incrby与decrby:对整数执行加减法操作

当字符串键存储的值能被Redis解释为整数时,用户就可以通过incrby命令和decrby命令对存储整数值进行加减法操作,不能多浮点型数字(小数)进行加减操作

127.0.0.1:6379> incrby key increment

  incrby加法操作

127.0.0.1:6379> set h 90
OK
127.0.0.1:6379> get h
"90"
127.0.0.1:6379> incrby h 400
(integer) 490
127.0.0.1:6379> incrby h 700
(integer) 1190
127.0.0.1:6379> incrby h 650
(integer) 1840
127.0.0.1:6379> get h
"1840"

  decrby减法操作

127.0.0.1:6379> set y 10086
OK
127.0.0.1:6379> decrby y 500
(integer) 9586
127.0.0.1:6379> decrby y 568
(integer) 9018
127.0.0.1:6379> decrby y 18
(integer) 9000

  处理不存在的键,对其进行加减操作

127.0.0.1:6379> get v
(nil)
127.0.0.1:6379> incrby v 90
(integer) 90
127.0.0.1:6379> get v
"90"
127.0.0.1:6379> get e
(nil)
127.0.0.1:6379> decrby e 60
(integer) -60
127.0.0.1:6379> get e
"-60"

  incr decr对整数执行加1减1操作

127.0.0.1:6379> set q 9
OK
127.0.0.1:6379> incr q
(integer) 10
127.0.0.1:6379> incr q
(integer) 11
127.0.0.1:6379> incr q
(integer) 12
127.0.0.1:6379> incr q
(integer) 13
127.0.0.1:6379> get q
"13"
127.0.0.1:6379> get i 一个空键
(nil)
127.0.0.1:6379> incr i
(integer) 1
127.0.0.1:6379> incr i
(integer) 2
127.0.0.1:6379> incr i
(integer) 3
127.0.0.1:6379> get i
"3"

  decr 进行减一操作

127.0.0.1:6379> get q
"13"
127.0.0.1:6379> decr q
(integer) 12
127.0.0.1:6379> decr q
(integer) 11
127.0.0.1:6379> decr q
(integer) 10
127.0.0.1:6379> decr q
(integer) 9
127.0.0.1:6379> get j
(nil)
127.0.0.1:6379> decr j
(integer) -1
127.0.0.1:6379> decr j
(integer) -2
127.0.0.1:6379> decr j
(integer) -3
127.0.0.1:6379> get j
"-3"

  对整数执行浮点数的加法操作incrbyfloat

127.0.0.1:6379> incrbyfloat key increnent

  incrbyfloat命令可以把一个浮点数增量到字符串键存储的数值上

127.0.0.1:6379> set j 4.5
OK
127.0.0.1:6379> incrbyfloat j 2.55
"7.05"
127.0.0.1:6379> get j
"7.05"

  incrbyfloat命令遇到不存在的键时,会先将键的值初始为0,然后在执行行营的操作

127.0.0.1:6379> get f
(nil)
127.0.0.1:6379> incrbyfloat f 2.55
"2.55"
127.0.0.1:6379> get f
"2.55"

  使用incrbyfloat命令执行浮点数减操作

127.0.0.1:6379> set o 8.15
OK
127.0.0.1:6379> incrbyfloat 0 -2.7
"-2.7"
127.0.0.1:6379> incrbyfloat o -2.7
"5.45"
127.0.0.1:6379> get 0
"-2.7"
127.0.0.1:6379> get o
"5.45"

  使用incrbyfloat命令处理浮点数加整数

127.0.0.1:6379> set j 99
OK
127.0.0.1:6379> get j
"99"
127.0.0.1:6379> incrbyfloat j 5.9
"104.9"
127.0.0.1:6379> get j
"104.9"
127.0.0.1:6379> incrbyfloat j 2.1
"107"

  注意:虽然redis并不限制字符串存储的浮点数的小数长度,但使用incrbyfloat命令处理浮点数的时候,命令最多只会保留计算结果小数点后17未数字。超出范围将被截断

127.0.0.1:6379> set t 0.123456789123456789123
OK
127.0.0.1:6379> incrbyfloat t 0
"0.12345678912345679"

  

redis 字符串操作的更多相关文章

  1. python连接redis、redis字符串操作、hash操作、列表操作、其他通用操作、管道、django中使用redis

    今日内容概要 python连接redis redis字符串操作 redis之hash操作 redis之列表操作 redis其他 通用操作,管道 django中使用redis 内容详细 1.python ...

  2. Redis字符串操作

      字符串命令 (基本用法) GET : 获取给定键的值 SET : 设置给定键的值 DEL : 删除给定键的值(这个命令可以用于任何类型) (自增命令和自减命令) INCR : INCR key-n ...

  3. [Redis-CentOS7]Redis字符串操作(二)

    登录Redis # redis-cli 127.0.0.1:6379> 添加字符串 EX 超期时间60s 127.0.0.1:6379> set username 'leoshi' OK ...

  4. Redis常用操作-----字符串

    1.APPEND key value 如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾. 如果 key 不存在, APPEND 就简单地将给定 ...

  5. Python操作redis字符串(String)详解 (三)

    # -*- coding: utf-8 -*- import redis #这个redis不能用,请根据自己的需要修改 r =redis.Redis(host=") 1.SET 命令用于设置 ...

  6. redis字符串

    字符串类型是redis的基本类型 字符串数据类型的相关命令用于管理 redis 字符串值,基本语法如下:COMMAND KEY_NAME SET 和GET用于设置和读取key的值 1.SET key ...

  7. python对缓存(memcached,redis)的操作

    1.Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的 ...

  8. php的redis 操作类,适用于单台或多台、多组redis服务器操作

    redis 操作类,包括单台或多台.多组redis服务器操作,适用于业务复杂.高性能要求的 php web 应用. redis.php: <?php /* redis 操作类,适用于单台或多台. ...

  9. php redis数据库操作类

    <?php namespace iphp\db; use iphp\App; /** * redis操作类 * 说明,任何为false的串,存在redis中都是空串. * 只有在key不存在时, ...

随机推荐

  1. dmesg用法

    百科概念:dmesg是一种程序,用于检测和控制内核环缓冲.程序用来帮助用户了解系统的启动信息. 解释:dmesg命令显示linux内核的环形缓冲区信息,我们可以从中获得诸如系统架构.cpu.挂载的硬件 ...

  2. 题解【洛谷P1433】吃奶酪

    题面 看到数据范围那么小,一眼状压\(\text{DP}\). 设\(dp[i][s]\)表示从\(i\)出发,走过的点的集合为\(s\)的最小距离. 不难推出转移方程(\(dis(i,j)\)为\( ...

  3. 实用 docker history

    关闭安装认证, 开启tcp 端口 sudo vi /usr/lib/systemd/system/docker.service ExecStart=/usr/bin/dockerd --insecur ...

  4. docker-machine之升级linux内核

    虚拟机版本及内核信息 uname -a 或者 uname -r 开始升级内核 1.更新yum源 yum -y update 2,获取内核信息 rpm --import https://www.elre ...

  5. Learn from Niu 2020.1.21

    1. 你一定要看计算机领域的文章. 如果你是看一堆应用,你最终还是会不知道怎么做. 从计算机到energy是降维打击, 当你学习了计算机的hot skill,再去做应用很容易. 2. 搞研究的思路: ...

  6. IntelliJ IDEA,酷炫插件系列,提高你的工作效率【plugins】

                             今天介绍一下IDEA的一些炫酷的插件,IDEA强大的插件库.                          不仅能给我们带来一些开发的便捷,还能体 ...

  7. NW.js桌面应用开发(一)

    NWjs中文网 Electron中文网 一些需要了解的历史与特性,其实就是 NW.js 和 Electron的争议,建议还是亲自阅读一下各自的官网说明 1.下载SDK版工具 从淘宝NPM镜像下载,速度 ...

  8. python后续学习

    关于使用python输出中文字符的问题: Python中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字,所以在读取中文时会报错. 解决方法为只要在文件开头加入 # -*- co ...

  9. bugku 有一张图,还单纯吗

    下载图片后以多种方式打开.分析文件类型都没能找到flag.推测存在隐藏文件,即文件可分离. 注:文件分离需要 binwalk 工具,在Ubuntu操作系统下 binwalk 的安装方法可参考此博客:h ...

  10. Zigbee 与 WiFi 的区别

    zigbee 在蓝牙技术的使用过程中,人们发现蓝牙技术尽管有许多优点,但仍存在许多缺陷.对工业,家庭自动化控制和遥测遥控领域而言,蓝牙技术显得太复杂,功耗大,距离近,组网规模太小等,……而工业自动化对 ...