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. HTTP 协议详解(超级经典)-转

    什么是HTTP协议 协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端 ...

  2. Modern Algebra 读书笔记

    Modern Algebra 读书笔记 Introduction 本文是Introduction to Modern Algebra(David Joyce, Clark University)的读书 ...

  3. node的异常处理

    Node是单线程运行环境,一旦抛出的异常没有被捕获,就会引起整个进程的崩溃.所以,Node的异常处理对于保证系统的稳定运行非常重要. node的处理方法: 1.使用throw语句抛出异常 常用的捕获异 ...

  4. 基于PHP的地址智能解析案例-快宝开放平台

    快宝地址智能解析,批量录入收件人.发件人最好的解决方案,广泛应用于快递行业,电商行业,ERP应用等. 一.对接前准备 注册快宝开放平台,获得开发者账号,查看如何注册. 二.对接联调 快宝开放平台支持多 ...

  5. 安装redis 执行make命令时报错解决方法

    一.未安装GCC 解决方法:执行yum install gcc-c++命令安装GCC,完成后再次执行make命令 yum install gcc-c++ Linux无法连接网络 http://www. ...

  6. Python安装与环境变量的配置

    python下载: Python安装包下载地址:http://www.python.org/ 根据实际的操作系统,安装合适的安装版本. Python安装: 本文以python 2.7.8(64位)为例 ...

  7. sa账号无法登陆sqlserver2008

    今天遇到sa无法登陆sqlserver2008的问题,原来是sa账户未启用,混合验证模式没打开,太低端了. 具体解决过程将从百度文库里查到的文章张贴如下: 出现问题 : 标题: 连接到服务器 ---- ...

  8. ACM 畅通工程2

    Problem Description 省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).经过调查评估,得到 ...

  9. android 原生camera——设置模块修改

    , 此篇博客是记一次客户需求修改,从上周五到现在正好一周时间,期间的各种酸爽,就不说了,还是来看大家关注的技术问题吧. 首先看下以前效果和修改后的效果: 修改前:修改后: 不知道有没有看明白,我在简单 ...

  10. 给PLSQL插上飞翔的翅膀-PLSQL优化

    60-80% of database performance issues are related to poorly performing SQL,60-80%的数据库性能问题要归结于生产中糟糕的S ...