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. SQL Server 检查和处理死锁问题

    SELECT spid, blocked, DB_NAME(sp.dbid) AS DBName, program_name, waitresource, lastwaittype, sp.login ...

  2. Allegro 反射仿真--IBIS模型转化

    一.IBIS模型的获取 a) 直接找芯片供应商 b) 从网上下载 i.到Google网站直接搜索某个型号的IBIS模型: ii. 到器件厂商的官方网站下载: iii.从专门提供IBIS模型的网站搜索下 ...

  3. java-日期取特定值

    import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * @author G ...

  4. linux异常 - 网卡故障

    问题描述: 弹出界面eth0: 错误:没有找到合适的设备:没有找到可用于链接System eth0 的设备 解决方案: 排错步骤如下: 1:查看系统是否识别相应网卡(发现没有eth0网卡存在): 根据 ...

  5. unity命令行参数

    Typically, Unity will be launched by double-clicking its icon from the desktop but it is also possib ...

  6. DOM盒模型和位置 client offset scroll 和滚动的关系

    DOM盒模型和位置 client offset scroll 和滚动的关系 概览 在dom里面有几个描述盒子位置信息的值, pading border margin width height clie ...

  7. 第五十四篇 Linux相关——远程连接SSH

        No.1. SSH(Secure Shell)安全外壳协议 建立在应用层基础上的安全协议 可靠,专为远程登录会话和其他网络服务提供安全性的协议 有效防止远程管理过程中的信息泄漏问题 SSH客户 ...

  8. C++-CodeForces-1307A/1307B/1307C

    假装自己打比赛嘿嘿嘿 #include <bits/stdc++.h> using namespace std; ]; int main(){ for(cin>>t;t--;) ...

  9. 使用命令把SpringBoot项目打包成可运行的jar包(简洁,操作性强)

    前几天接到一个需求,要把原系统中一个数据处理小功能搬出原系统,拉出来单独做一个SpringBoot项目,然后打成jar包扔到Windows服务器上运行,这样数据处理的时候如果遇到堵塞就不至于整个系统都 ...

  10. bzoj 3669: [Noi2014]魔法森林 (LCT & kruskal)

    这道题呢, 首先按照关键字a排序,然后不断地加边,用lct维护这个过程 具体实现: 先按照关键字a排序,枚举每一条边,判断两点是否已经联通(kruskal 部分)如果联通,就在两点路径间寻找最大的b, ...