02_NoSQL数据库之Redis数据库:string类型和hash类型



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秒。


[[email protected] bin]$ ./redis-cli     
启动服务端

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

OK

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

"red"

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

(nil)

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

Setrange

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

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


127.0.0.1:6379> set name
[email protected]    
 设置name的值

OK

127.0.0.1:6379> get name                
 获得name的值

"[email protected]"

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

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

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

"[email protected]"

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 [email protected] key2 toto

(integer) 0

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

127.0.0.1:6379> msetnx key4 lampbrother.net key5 [email protected]

(integer) 1

127.0.0.1:6379> get key4

"lampbrother.net"

127.0.0.1:6379> get key5

"[email protected]"

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

"[email protected]"

127.0.0.1:6379> getrange key5 3 10

"[email protected]"

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) "[email protected]"

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 [email protected]


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

"[email protected]"

127.0.0.1:6379>

strlen(查看字符串的长度)

取指定key的value值的长度。


127.0.0.1:6379> get name

"[email protected]"

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.

时间: 2024-11-03 05:27:53

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

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

Linux 版本信息: cat /etc/issue 或cat /etc/redhat-release(Linux查看版本当前操作系统发行版信息) CentOS release 6.6 (Final) (一)String 类型 [定义]string 是最简单的类型,你可以理解成与 Memcached 是一模一样的类型,一个 key 对应一个 value,其上支持的操作与 Memcached 的操作类似.但它的功能更丰富. string 类型是二进制安全的.意思是 redis 的 string 可

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

string类型转成byte[]: byte[] byteArray = System.Text.Encoding.Default.GetBytes ( str ); byte[]转成string: string str = System.Text.Encoding.Default.GetString ( byteArray ); string类型转成ASCII byte[]: ("01" 转成 byte[] = new byte[]{ 0x30,0x31}) byte[] byteA

String类型和Date类型的相互转换

1 import java.text.DateFormat; 2 import java.text.ParseException; 3 import java.text.SimpleDateFormat; 4 5 6 //String--->Date 7 String str1 = "2011-5-31 14:40:50"; 8 DateFormat df = DateFormat.getDateInstance(); 9 Date date; 10 try { 11 date

使用AngularJs制作页面知识点汇总一:String类型和JSON相互转换

最近一周做了一个页面,制作的过程中遇到各种问题,从中可以看出本人的js基础还不够扎实,angularjs也只是刚入门的水平,现在将制作过程中遇到的问题一一汇总,方便以后查阅. 一.String类型和JSON相互转换 1.使用ng来转换 angularjs中有fromJson和toJson两个方法用于处理json和string类型之间的转换 var json = '{"name":"liSi", "password":"321"

着重基础之—MySql Blob类型和Text类型

着重基础之—MySql Blob类型和Text类型—二进制存储 在经历了几个Java项目后,遇到了一些问题,在解决问题中体会到基础需要不断的回顾与巩固. 最近做的项目中,提供给接口调用方数据同步接口,传输的数据格式是Json串.由于json串的结构层级较多,数据量也不少.在设计数据库的时候,选择了Blob类型做为字段类型.一切的一切就打这开始,同步服务正常运作,但是问题慢慢的暴露了出来,客户端在暂时我所提供的数据的时候,中文总是显示乱码,乱码,乱码,一直乱码. 问题的分析路径 1.查看了数据库连

java date类型和calendar类型区别

Date类 在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于Date类不便于实现国际化,所以从JDK1.1版本开始,推荐使用Calendar类进行时间和日期处理.这里简单介绍一下Date类的使用. 1.使用Date类代表当前系统时间 Date d = new Date(); System.out.println(d); 使用Date类的默认构造方法创建出的对象就代表当前时间,由于Date类覆盖了toString方法,所以可以直接输出Date类型的对象,显示的结果如下: Sun Ma

Date类型和Long类型的相互转换

Date类型和Long类型的相互转换: import java.text.SimpleDateFormat; import java.util.Date; public class T { public static void main(String[] args) throws Exception { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 1.Date类型转Long类型 // pa

python3.5 的str类型和bytes类型的转换

在python3.x里增加了bytes类型,并且对str方法进行了修改,让str类型和bytes类型可以相互转换. #!/usr/bin/env python # -*- coding:utf-8 -*- a = "哈哈" #字符串转换成字节 b = bytes(a,encoding='utf-8') print(b) b1 = bytes(a,encoding='gbk') print(b1) #将字节转换成字符 c=str(b,encoding='utf-8') print(c)

NoSQL数据库之Redis数据库:Redis的介绍与安装部署

 NoSQL(NoSQL = Not Only SQL),它指的是非关系型的数据库.随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显的力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展. NoSQL的特点: 特点一: 是以key-value形式存储,和传统的关系型数据库不一样,不一定遵循传统数据库的一些基本要求,比如说遵循SQL标准.ACID属性.表结构等等,这