Redis String类型数据常用的16条命令总结

描述:String 类型是最简单的类型,一个Key对应一个Value,String类型是二进制安全的。Redis的String可以包含任何数据,比如jpg图片或序列化对象。

常用方法:
      1, set方法:
set  <key>  <value>       设置key的值为value
(1)对不存在的key使用set:

redis 127.0.0.1:6379> set name 'zhangsan'
OK
redis 127.0.0.1:6379> get name
"zhangsan"

(2)对已存在的key使用set,更换key的值:

redis 127.0.0.1:6379> set name 'lisi'
OK
redis 127.0.0.1:6379> get name
"lisi"

2,setnx 方法:

setnx  <key>   <value>     当key不存在时,设置key的值为value,设置成功,返回1,设置失败,返回0.

redis 127.0.0.1:6379> setnx name 'wangwu'
(integer) 0
redis 127.0.0.1:6379> get name
"lisi"
redis 127.0.0.1:6379> setnx name2 'wangwu'
(integer) 1
redis 127.0.0.1:6379> get name2
"wangwu"

3,setex 方法:
setex  <key>  <seconds>  <value>    设置key的值为value,过期时间为seconds(单位为秒).如果key已经存在,
则会覆盖其值。过期之后,返回的是为nil.

redis 127.0.0.1:6379> setex name 3 'zhangsan'
OK
redis 127.0.0.1:6379> get name
"zhangsan"
redis 127.0.0.1:6379> get name
(nil)
redis 127.0.0.1:6379> setex name 30 'zhangsan'
OK
redis 127.0.0.1:6379> get name
"zhangsan"
redis 127.0.0.1:6379> setex name 30 'lisi'
OK
redis 127.0.0.1:6379> get name
"lisi"

4,setrange方法:
setrange  <key>  <offset>  <value>   用 value 参数覆盖给定 key 所储存的字符串值,下标从0开始,偏移量从 offset 开始。如果key不存在,则当做空白字符串处理。此命令会确保字符串足够长以便将 value 设置在指定的偏移量上,如果给定 key 原来储存的字符串长度比偏移量小(比如字符串只有 5 个字符长,但你设置的 offset 是 10 ),那么原字符和偏移量之间的空白将用零字节(zerobytes, "\x00" )来填充。注意你能使用的最大偏移量是 2^29-1(536870911) ,因为 Redis 字符串的大小被限制在 512 兆(megabytes)以内。如果你需要使用比这更大的空间,你可以使用多个 key 。

redis 127.0.0.1:6379> set name 'zhangsan'
OK
redis 127.0.0.1:6379> get name
"zhangsan"
redis 127.0.0.1:6379> setrange name 5 '_si'
(integer) 8
redis 127.0.0.1:6379> get name
"zhang_si"
redis 127.0.0.1:6379> get name3
(nil)
redis 127.0.0.1:6379> setrange name3 4 'lisi'
(integer) 8
redis 127.0.0.1:6379> get name3
"\x00\x00\x00\x00lisi"
redis 127.0.0.1:6379>

5,mset方法:

mset  <key>  <value> [<key>   <value> ...]   同时设置多个key-value对,如果key已经存在,则会覆盖以前的值。

redis 127.0.0.1:6379> get name
"zhang_si"
redis 127.0.0.1:6379> mset name 'zhangsan' name2 'lisi' name3 'wangwu'
OK
redis 127.0.0.1:6379> get name
"zhangsan"
redis 127.0.0.1:6379> get name2
"lisi"
redis 127.0.0.1:6379> get name3
"wangwu"
redis 127.0.0.1:6379>

6,msetnx方法:

msetnx  <key>  <value> [<key>   <value> ...]   类似与mset方法,同时设置多个key-value对,当且仅当所给定的key都不存在时。如果操作成功,返回1,失败返回0.

redis 127.0.0.1:6379> set age 12
OK
redis 127.0.0.1:6379> get age
"12"
redis 127.0.0.1:6379> msetnx age 14 age1 34 age2 55
(integer) 0
redis 127.0.0.1:6379> get age1
(nil)
redis 127.0.0.1:6379> get age
"12"
redis 127.0.0.1:6379> msetnx key1 'hello' key2 'word'
(integer) 1
redis 127.0.0.1:6379> get key1
"hello"
redis 127.0.0.1:6379> get key2
"word"
redis 127.0.0.1:6379>

7,append方法:

append <key> <value> 将value追加到原来的key值之后,如果key本不存在,则默认创建一个key-value对。操作成功返回1,失败返回0.

redis 127.0.0.1:6379> set name 'zhangshan'
OK
redis 127.0.0.1:6379> get name
"zhangshan"
redis 127.0.0.1:6379> append name ' is 12.'
(integer) 16
redis 127.0.0.1:6379> get name
"zhangshan is 12."
redis 127.0.0.1:6379> get addr
(nil)
redis 127.0.0.1:6379> append addr '32 env.'
(integer) 7
redis 127.0.0.1:6379> get addr
"32 env."
redis 127.0.0.1:6379>

8 ,get 方法:

get <key> 取出 key的值。

9, mget 方法:

mget <key> [<key>...] 取出多个key的值。如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil。

redis 127.0.0.1:6379> mget name name1  name2 name3
1) "zhangshan is 12."
2) (nil)
3) "lisi"
4) "wangwu"
redis 127.0.0.1:6379>

10, getrange 方法:

getrange <key> <start> <end> 获取key对应值的子字符串,从偏移量start到end之间的串(包含start和end),value最左边的一个字符的索引为0以此类推,最后一个字符的索引为字符串的总长度减一,反过来类似。这与Python中的切片操作及其类似。如,字符串"zhangsan"对应的正向下标如下图中的下标一所示,反向下标如下图中的下标二所示。

下标一: 0 1 2 3 4 5 6 7
  z h a n g s a n
下标二: 0 -7 -6 -5 -4 -3 -2 -1
redis 127.0.0.1:6379> set name 'zhangsan'
OK
redis 127.0.0.1:6379> getrange name 0 4
"zhang"
redis 127.0.0.1:6379> getrange name 0 20
"zhangsan"
redis 127.0.0.1:6379> getrange name 0 -1
"zhangsan"
redis 127.0.0.1:6379>

11,getset方法:

getset <key> <value> 设定key的值为value,并返回key的旧值,当key的旧值不存在时,返回nil。

redis 127.0.0.1:6379> get name
"zhangsan"
redis 127.0.0.1:6379> getset name 'lisi'
"zhangsan"
redis 127.0.0.1:6379> get name
"lisi"
redis 127.0.0.1:6379> get code
(nil)
redis 127.0.0.1:6379> getset code 'hello'
(nil)
redis 127.0.0.1:6379> get code
"hello"
redis 127.0.0.1:6379>

12, strlen 方法:

strlen <key> 返回key的长度,如果key的值不存在时,返回0.

redis 127.0.0.1:6379> get name
"lisi"
redis 127.0.0.1:6379> strlen name
(integer) 4
redis 127.0.0.1:6379> get key0
(nil)
redis 127.0.0.1:6379> strlen key0
(integer) 0

13,incr 方法:

incr <key> 将key的值加1。如果key的值不存在,则默认设置key的值为0,调用一次,增加一次,如果key的值不是整数类型,则返回一个错误。

redis 127.0.0.1:6379> get name
"lisi"
redis 127.0.0.1:6379> incr name
(error) ERR value is not an integer or out of range
redis 127.0.0.1:6379> set name 5
OK
redis 127.0.0.1:6379> incr name
(integer) 6
redis 127.0.0.1:6379> get name
"6"
redis 127.0.0.1:6379> get key0
(nil)
redis 127.0.0.1:6379> incr key0
(integer) 1
redis 127.0.0.1:6379> incr key0
(integer) 2
redis 127.0.0.1:6379> get key0
"2"
redis 127.0.0.1:6379>

14, decr 方法:

decr <key> 类似与incr方法,将key的值减1。如果key的值不存在,则默认设置key的值为0,调用一次,减一次,如果key的值不是整数类型,则返回一个错误。

redis 127.0.0.1:6379> get name
"6"
redis 127.0.0.1:6379> decr name
(integer) 5
redis 127.0.0.1:6379> decr name
(integer) 4
redis 127.0.0.1:6379> decr key9
(integer) -1
redis 127.0.0.1:6379>

15,incrby 方法:

incrby<key> <increment> 类似与decr方法,将key的值增加增量increment。同理,错误的类型任然返回错误。如果key值不存在,则默认为0后进行操作。

redis 127.0.0.1:6379> set count 20
OK
redis 127.0.0.1:6379> get count
"20"
redis 127.0.0.1:6379> incrby count 40
(integer) 60
redis 127.0.0.1:6379> get count
"60"
redis 127.0.0.1:6379> get count1
(nil)
redis 127.0.0.1:6379> incrby count1 30
(integer) 30
redis 127.0.0.1:6379> get count1
"30"

16,decrby 方法:
decrby <key> <decrement> 类似与decr方法,将key的值减去增量decrement。同理,错误的类型任然返回错误。如果key值不存在,则默认为0后进行操作。

redis 127.0.0.1:6379> set count 20
OK
redis 127.0.0.1:6379> decrby count 4
(integer) 16
redis 127.0.0.1:6379> get count2
(nil)
redis 127.0.0.1:6379> decrby count2 10
(integer) -10
redis 127.0.0.1:6379>

[置顶] Redis String类型数据常用的16条命令总结的更多相关文章

  1. [redis] redis 对string类型数据操作

    package com.xwolf.java.redis; import org.junit.Before; import org.junit.Test; import redis.clients.j ...

  2. Redis string类型常用操作

      Redis 有 string.list.set.zset.hash数据类型.string类型是最基础的,其他类型都是在string类型上去建立的,所以了解熟悉string类型的常用操作对于学习re ...

  3. 分享一个Python脚本--统计redis key类型数据大小分布

    概述 今天主要介绍怎么统计redis key类型数据大小分布. 原理:使用redis命令: scan.pipline.type 和 debug object 来得到 redis key 信息. 脚本 ...

  4. Java String类型数据的字节长度

    问题描述: 向Oracle数据库中一varchar2(64)类型字段中插入一条String类型数据,程序使用String.length()来进行数据的长度校验,如果数据是纯英文,没有问题,但是如果数据 ...

  5. Linux之我最常用的20条命令

    Linux之我最常用的20条命令 玩过 Linux的人都会知道, Linux中的命令的确是非常多,但是玩过 Linux的人也从来不会因为 Linux的命令如此之多而烦恼,因为我们只需要掌握我们最常用的 ...

  6. redis 模拟jedis 操作string类型数据

    一.思路分析 redis数据传输遵循resp协议,只需要按照resp协议并通过socket传递数据到redis服务器即可 resp数据格式: 二.具体实现 package com.ahd.jedis; ...

  7. Redis基本类型与常用命令

    Redis基本类型一共有五类: 字符串类型(string): 散列类型(hash): 列表类型(list): 集合类型(sort): 有序集合类型(zset): 在redis中,所有的类型都是被以键值 ...

  8. C# 通过ServiceStack 操作Redis——String类型的使用及示例

    1.引用Nuget包 ServiceStack.Redis 我这里就用别人已经封装好的Reids操作类,来演示,并附上一些说明 RedisConfigInfo--redis配置文件信息 /// < ...

  9. Android java传递string类型数据给C

    本文接着实现<Android java传递int类型数据给C>的还未实现的方法: public native String sayHelloInC(String s); 先贴一个工具方法, ...

随机推荐

  1. 【windows核心编程】HideProcess

    A Basic Windows DKOM Rootkit Pt 1 https://www.landhb.me/posts/v9eRa/a-basic-windows-dkom-rootkit-pt- ...

  2. Python学习三|列表、字典、元组、集合的特点以及类的一些定义

    此表借鉴于他人 定义 使用方法 列表 可以包含不同类型的对象,可以增减元素,可以跟其他的列表结合或者把一个列表拆分,用[]来定义的 eg:aList=[123,'abc',4.56,['inner', ...

  3. 一个无锁消息队列引发的血案(三)——地:q3.h 与 RingBuffer

    目录 (一)起因 (二)混合自旋锁 (三)q3.h 与 RingBuffer (四)RingQueue(上) 自旋锁 (五)RingQueue(中) 休眠的艺术 (六)RingQueue(中) 休眠的 ...

  4. Ubuntu环境下TensorBoard 可视化 不显示数据问题 No scalar data was found...(作者亲测有效)(转)

    TensorBoard:Tensorflow自带的可视化工具.利用TensorBoard进行图表可视化时遇到了图表不显示的问题. 环境:Ubuntu系统 运行代码,得到TensorFlow的事件文件l ...

  5. 【pytorch】pytorch学习笔记(一)

    原文地址:https://pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html 什么是pytorch? pytorch是一个基于p ...

  6. 记一些使用PyQt的问题

    本文自用,日常记录,不断更新 环境 1.使用 PyCharm IDE 2.PyQt5 3. 扩展配置 PyUIC转换后的代码处理 PyUIC 用于 将 QtDesigner 生成的 .ui 文件转换为 ...

  7. Angular 2.0--1

    Angular 2.0 从0到1 (五) 第一节:Angular 2.0 从0到1 (一)第二节:Angular 2.0 从0到1 (二)第三节:Angular 2.0 从0到1 (三)第四节:Ang ...

  8. CSS------ul与div如何排成一行

    如图: 代码:(需要给div的float属性设置为left) <div style="margin-top:10px"> <div style="flo ...

  9. js变量和函数声明的提升(转)

    原文:http://zha-zi.iteye.com/blog/2037026 下面的程序是什么结果? var foo = 1; function bar() { if (!foo) { var fo ...

  10. html导出pdf的四种方式

    将html页面导出为pdf文件并打印,可以直接在windows下使用Ctrl + P,苹果下⌘ + P. 如果需要用代码实现,可以考虑jsPDF.iText.wkhtmltopdf等方式. 以下是三种 ...