Strings类型及操作

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

Set

设置Key对应的值为string类型的value.

例如:我们添加一个name=lijie的键值对:

127.0.0.1:6379> set name toto

OK

//获取name的值:

127.0.0.1:6379> get name

"toto"

//再次重新设置name的值:

127.0.0.1:6379> set name totobrother

OK

127.0.0.1:6379> get name

"totobrother"

setnx

设置key对应的值为string类型的value,如果key已经存在,返回0,nx是not
exist的意思。

也就是说,使用setnx来设置的时候,如果已经设置过了,返回0,取到的值是原来的值,没有设置过返回1。

127.0.0.1:6379> get name

"totobrother"

127.0.0.1:6379> setnx name totobrother

(integer) 0

127.0.0.1:6379> get name

"totobrother"

127.0.0.1:6379> set age 20

OK

127.0.0.1:6379> setnx age2 20

(integer) 1

127.0.0.1:6379> setnx age2 40

(integer) 0

127.0.0.1:6379> get age2

"20"

Setex

设置key对应的值为string类型的value,并指定此键值对应的有效期。

例如:我们添加一个haircolor=red的键值对,并指定有效期为10秒。

[toto@localhost bin]$ ./redis-cli     
启动服务端

127.0.0.1:6379> setex haircolor 10 red   
通过setex设置指定时间内的key
value值有效

OK

127.0.0.1:6379> get haircolor          
秒内的时候有效

"red"

127.0.0.1:6379> get haircolor         
秒钟以后这个键会消失,可以重新对其设置。

(nil)

127.0.0.1:6379>                    
setex当不指定时间的时候,表示永久有效。

Setrange

设置指定key的value值的字符串。

例如:我们希望将lijie的126邮箱替换为gmail邮箱。

127.0.0.1:6379> set name
lijie@126.com    
 设置name的值

OK

127.0.0.1:6379> get name                
 获得name的值

"lijie@126.com"

127.0.0.1:6379> setrange name 6 gmail.com 
表示字符所在的下标,表示从第几个下标开始替换。

(integer) 15                             
返回的是字符串的长度。

127.0.0.1:6379> get name                 
获得指定key的对应的值。

"lijie@gmail.com"

127.0.0.1:6379>

mset  (批量设置)

一次设置多个key的值成功返回OK表示所有的值都设置了,失败返回0表示没有任何值被设置。

127.0.0.1:6379> mset key1 lijie1 key2 lijie2   
批量设置key1和key2

OK

127.0.0.1:6379> get key1

"lijie1"

127.0.0.1:6379> get key2

"lijie2"

127.0.0.1:6379>

msetnx

一次设置多个key的值,成功返回OK表示所有的值设置了。失败返回0表示没有任何值被设置,但是不会覆盖已经存在的key.

127.0.0.1:6379> get key2

"lijie2"

如果一个已经设置过,那么都设置不成功。如果有一个设置成功了,都设置不成功了

127.0.0.1:6379> msetnx key4 lampbrother.net key5 lijie@lampbrother key2 toto

(integer) 0

只有都没有设置过的,才可以进行设置。

127.0.0.1:6379> msetnx key4 lampbrother.net key5 lijie@lampbrother

(integer) 1

127.0.0.1:6379> get key4

"lampbrother.net"

127.0.0.1:6379> get key5

"lijie@lampbrother"

127.0.0.1:6379>

get

获取key对应的string值,如果key不存在返回nil

getset
:获取旧值,并设置新值。

设置key的值,并返回key的旧值。

127.0.0.1:6379> getset key6 30

(nil)

127.0.0.1:6379> get key6

"30"

127.0.0.1:6379>

getrange

获取key的value值的子字符串。

127.0.0.1:6379> get key5

"lijie@lampbrother"

127.0.0.1:6379> getrange key5 3 10

"ie@lampb"

127.0.0.1:6379>

mget (批量获取)

一次获取多个key的值,如果对应key不存在,则对应返回nil.

127.0.0.1:6379> mget key1 key2 key3 key4 key5 key6

1) "lijie1"

2) "lijie2"

3) (nil)

4) "lampbrother.net"

5) "lijie@lampbrother"

6) "30"

127.0.0.1:6379>

incr

对key的值做加加操作,并返回新的值。

incrby

同incr类似,加指定值,key不存在时候会设置key,并认为原来的value是0.

127.0.0.1:6379> decr key6

(integer) -1

127.0.0.1:6379> decr key6

(integer) -2

127.0.0.1:6379> incr key6

(integer) -1

127.0.0.1:6379> incr key6

(integer) 0

127.0.0.1:6379> incrby key6 +5

(integer) 5

127.0.0.1:6379> incrby key +5

(integer) 5

127.0.0.1:6379> incrby key6 +5

(integer) 10

127.0.0.1:6379> get key6

"10"

127.0.0.1:6379>

decr

对key的值做减减操作

decrby

同decr类似,减指定值。

127.0.0.1:6379>decr key6

(integer)37

127.0.0.1:6379>decr key6

(integer)36

127.0.0.1:6379>decrby key6 -3

(integer)33

append

给指定key的字符串追加value,返回新字符串值的长度。

append name@li-jie.me

127.0.0.1:6379> get name

"totobrother"

127.0.0.1:6379> append name @li-jie.me

(integer) 21

127.0.0.1:6379> get name

"totobrother@li-jie.me"

127.0.0.1:6379>

strlen(查看字符串的长度)

取指定key的value值的长度。

127.0.0.1:6379> get name

"totobrother@li-jie.me"

127.0.0.1:6379> strlen name

(integer) 21

127.0.0.1:6379>

hashes类型

hashes类型及操作

Redis hash是一个string类型的field和value的映射表。它的添加、删除操作都是0(1)(平均)。hash特别适合用于存储对象。相较于将对象的每个字段存成当个string类型。将一个对象存储在hash类型中会占用更少的内存,并且可以更方便的存取整个对象。

hset(设置hash表)

设置hash field为指定值,如果key不存在,则先创建。

hset hash表名 
key值 
value值

127.0.0.1:6379> hset myhash field1 hello

(integer) 1

127.0.0.1:6379> hset user:001 name lijie

(integer) 1

通过hget获得值,hget
hash表 
名称

127.0.0.1:6379> hget user:001 name

"lijie"

127.0.0.1:6379>

hsetnx

设置hash field为指定值,如果key不存在,则先创建。如果存在返回0.

127.0.0.1:6379> hsetnx user:002 name lamp

(integer) 1

127.0.0.1:6379> hget user:002 name

"lamp"

127.0.0.1:6379> hsetnx user:002 name lampbrother 
//如果已经存在,再设置时设置不成功

(integer) 0

127.0.0.1:6379> hget user:002 name

"lamp"

127.0.0.1:6379>

hmset

同时设置hash的多个field

hmget:获取全部指定的hash field

127.0.0.1:6379> hsetnx user:002 name lampbrother

(integer) 0

127.0.0.1:6379> hget user:002 name

"lamp"

127.0.0.1:6379> hmset user:003 name lijie age 20 sex 1

OK

127.0.0.1:6379> hget user:003 name

"lijie"

127.0.0.1:6379> hget user:003 age

"20"

127.0.0.1:6379> hget user:003 sex

"1"

127.0.0.1:6379> hmget user:003 name age sex

1) "lijie"

2) "20"

3) "1"

127.0.0.1:6379>

hincrby

指定的hash field加上给定值。对某一个键进行自增。

hexists

测试指定field是否存在。

127.0.0.1:6379> hexists user:003 name

(integer) 1             
//如果指定字段存在,则返回1,否则返回0

hlen

返回指定hash的field数量。

127.0.0.1:6379> hlen myhash

(integer) 1

127.0.0.1:6379> hlen user:001

(integer) 1

127.0.0.1:6379> hlen user:003

(integer) 3

127.0.0.1:6379>

hdel

删除指定hash的field字段

hkeys:返回hash的所有field

127.0.0.1:6379> hkeys user:003

1) "name"

2) "age"

3) "sex"

127.0.0.1:6379>

hvals:返回hash的所有value.

127.0.0.1:6379> hkeys user:003

1) "name"

2) "age"

3) "sex"

127.0.0.1:6379> hvals user:001

1) "lijie"

127.0.0.1:6379> hvals user:002

1) "lamp"

127.0.0.1:6379> hvals user:003

1) "lijie"

2) "20"

3) "1"

127.0.0.1:6379>

hgetall

获取某个hash中全部的field及value.

02_NoSQL数据库之Redis数据库:string类型和hash类型的更多相关文章

  1. 第一节: Redis之String类型和Hash类型的介绍和案例应用

    一. String类型基础 1.类型介绍 典型的Key-Value集合,如果要存实体,需要序列化成字符串,获取的时候需要反序列化一下. 2. 指令Api说明 3.常用Api说明 (1).StringS ...

  2. Redis 笔记与总结2 String 类型和 Hash 类型

    Linux 版本信息: cat /etc/issue 或cat /etc/redhat-release(Linux查看版本当前操作系统发行版信息) CentOS release 6.6 (Final) ...

  3. 【redis】02string类型和hash类型

    Redis的数据类型   Redis主要分为五个数据类型,一个是string,最简单的一个数据类型,hash,list, 还有set集合,还有zset有序集合,这是咱们redis的五种基础类型, 接下 ...

  4. 第二节: Redis之Set类型和SortedSet类型的介绍和案例应用

    一. Set类型基础 1. 类型说明 1个key→多个value,value的值不重复! Set一种无序且元素内容不重复的集合,不用做重复性判断了,和我们数学中的集合概念相同,可以对多个集合求交集.并 ...

  5. 【redis】04set类型和zset类型

    sets类型   sets类型及操作   Set类型是一个集合,他是string类型的无序集合,也就是说咱们的set是没有顺序的, Set是通过hash table实现的,添加.删除和查找的复杂度都是 ...

  6. 关于 实体类中 时间字段 为string 类型和 datatime类型 比较

    经发现, 数据库中保存时间格式数据  可以正常 排序, 数据中保存时间格式字符串 排序出现问题 /// <summary> /// 修改时间 /// </summary> pu ...

  7. C# string类型和byte[]类型相互转换

    string类型转成byte[]: byte[] byteArray = System.Text.Encoding.Default.GetBytes ( str ); byte[]转成string: ...

  8. C++ unordered_map 在key为string类型和char*类型时测试时间性能差异

    测试系统liunx centos6.5 代码如下 #include <string.h> #include <sstream> #include <list> #i ...

  9. string类型和int类型之间的转换

    一.string转int 1. 使用string流 /* 字符串转整型 */ /* * istringstream:从 string 读取数据 * ostringstream:向 string 写入数 ...

随机推荐

  1. React 深入系列4:组件的生命周期

    文:徐超,<React进阶之路>作者 授权发布,转载请注明作者及出处 React 深入系列4:组件的生命周期 React 深入系列,深入讲解了React中的重点概念.特性和模式等,旨在帮助 ...

  2. AQS

    AQS介绍 AQS,即AbstractQueuedSynchronizer, 队列同步器,它是Java并发用来构建锁和其他同步组件的基础框架. AQS的核心思想是基于volatile int stat ...

  3. 视频人脸检测——OpenCV版(三)

    视频人脸检测是图片人脸检测的高级版本,图片检测详情点击查看我的上一篇<图片人脸检测——OpenCV版(二)> 实现思路: 调用电脑的摄像头,把摄像的信息逐帧分解成图片,基于图片检测标识出人 ...

  4. vscode 常见插件及配置 备忘

    配置 // 以下解决格式化js自动添加分号 "prettier.singleQuote": true, "prettier.semi": false, // 以 ...

  5. MySQL my.cnf 配置文件注释

    以下是my.cnf配置文件参数解释 [client] port                     = 3309socket                   = /home/longxiben ...

  6. spring cloud 入门系列二:使用Eureka 进行服务治理

    服务治理可以说是微服务架构中最为核心和基础的模块,它主要用来实现各个微服务实例的自动化注册和发现. Spring Cloud Eureka是Spring Cloud Netflix 微服务套件的一部分 ...

  7. MySQL UPDATE 查询

    MySQL UPDATE 查询 如果我们需要修改或更新MySQL中的数据,我们可以使用 SQL UPDATE 命令来操作.. 语法 以下是 UPDATE 命令修改 MySQL 数据表数据的通用SQL语 ...

  8. AC的故事大结局山寨版(下)(最大流)

    福建工程学院第十二届ACM程序设计大赛真题 AC的故事大结局山寨版(下) TimeLimit:2000MS  MemoryLimit:128MB 64-bit integer IO format:%l ...

  9. Azure AI 服务之语音识别

    笔者在前文<Azure AI 服务之文本翻译>中简单介绍了 Azure 认知服务中的文本翻译 API,通过这些简单的 REST API 调用就可以轻松地进行机器翻译.如果能在程序中简单的集 ...

  10. 【SSH系列】初识spring+入门demo

    学习过了hibernate,也就是冬天,经过一个冬天的冬眠,当春风吹绿大地,万物复苏,我们迎来了spring,在前面的一系列博文中,小编介绍hibernate的相关知识,接下来的博文中,小编将继续介绍 ...