【Redis2】Redis数据库的学习与实践—redis的数据类型

原创
2016-06-07 16:02:50 803浏览

127.0.0.1:6379 set name inter OK 127.0.0.1:6379 get name inter 127.0.0.1:6379 set name millan 127.0.0.1:6379 get name millan #第一种情况,setnx判断name存在值,所以后面的设值返回(integer)0,设值不成功 127.0.0.1:6379 set name inter OK 127.0.

  1. 127.0.0.1:6379 > set name inter
  2. OK
  1. 127.0.0.1:6379> get name
  2. “inter”
  1. 127.0.0.1:6379> set name millan
  2. 127.0.0.1:6379> get name
  3. “millan”
  1. #第一种情况,setnx判断name存在值,所以后面的设值返回(integer)0,设值不成功
  2. 127.0.0.1:6379> set name inter
  3. OK
  4. 127.0.0.1:6379> setnx name millan
  5. (integer) 0
  6. #对一个没有设过值的变量进行设值,返回(integer)1,通过get方法验证,设值成功
  7. 127.0.0.1:6379> setnx new_name inter
  8. (integer) 1
  9. 127.0.0.1:6379> get new_name
  10. "inter"
  1. #设置wind的value是hot,并且设置时间为10秒,10秒之内有效,10秒过后,此键值对失效
  2. 127.0.0.1:6379> setex wind 10 hot
  3. OK
  4. 127.0.0.1:6379> get wind
  5. "hot"
  6. 127.0.0.1:6379> get wind
  7. (nil)
  1. 127.0.0.1:6379> set name djy@163.com
  2. OK
  3. 127.0.0.1:6379> setrange name 4 gmail.com
  4. (integer) 13
  5. 127.0.0.1:6379> get name
  6. "djy@gmail.com"
  1. 127.0.0.1:6379> mset key1 djy1 key2 djy2 key3 djy3
  2. OK
  3. 127.0.0.1:6379> get key2
  4. "djy2"
  5. 127.0.0.1:6379> get key3
  6. "djy3"
  7. 127.0.0.1:6379> get key1
  8. "djy1"
  1. 127.0.0.1:6379> msetnx key1 djyisasmartguy key5 yes
  2. (integer) 0
  3. 127.0.0.1:6379> get key5
  4. (nil)
  5. 127.0.0.1:6379> get key1
  6. "djy1"
  1. 127.0.0.1:6379> getset key1 djyisasmartguy
  2. "djy1"
  3. 127.0.0.1:6379> get key1
  4. "djyisasmartguy"
  1. 127.0.0.1:6379> getrange key1 8 10
  2. "art"
  3. 127.0.0.1:6379>
  1. 127.0.0.1:6379> mget key1 key2
  2. 1) "djyisasmartguy"
  3. 2) "djy2"
  1. 127.0.0.1:6379> set key5 10
  2. OK
  3. 127.0.0.1:6379> incr key5
  4. (integer) 11
  1. #incrby key5 10是指增溢10次,如果是-10就是减10次
  2. 127.0.0.1:6379> incrby key5 10
  3. (integer) 21
  4. 127.0.0.1:6379> get key5
  5. "21"
  1. 127.0.0.1:6379> decr key5
  2. (integer) 20
  3. 127.0.0.1:6379> decrby key5 6
  4. (integer) 14
  1. 127.0.0.1:6379> get key1
  2. "djyisasmartguy"
  3. 127.0.0.1:6379> append key1 true
  4. (integer) 18
  5. 127.0.0.1:6379> get key1
  6. "djyisasmartguytrue"
  1. 127.0.0.1:6379> strlen key1
  2. (integer) 18

Redis数据库的学习与实践—redis的数据类型

Redis的数据类型:

1:Strings类型及操作:

String类型是最简单的类型,一个Key对应一个Value,String类型是二进制安全的。Redis的String可以包含任何数据,比如jpg图片或者序列化的对象。
(1)Set方法,设置key对应的值为String类型的value。
例如:设置一个name=inter的键值对:
取值:
覆盖值:
后面设置的值,会将之前设置的值给覆盖掉。
如果后面在设置值的时候不想覆盖之前的值,可以使用:setnx
(2)Setnx在操作的时候,会首先判断这个name里面是否存在值,只有当name里面不包含值的情况下,才会设置成功。(nx代表not exist的意思)
例如:
(3)setex
设置key对应的值为string类型的value,并指定此键值对对应的有效期。
在其他的设置方法中,不设置有效期,则代表其永久有效。
例如:
(4)setrange
设置指定key的value值的子字符串
(5)mset
一次设置多个key的值,成功返回ok表示所有的值都设置了,失败返回0表示没有任何值被设置。
(6)msetnx
一次设置多个key的值,成功返回ok表示所有的值都设置了,失败返回0表示没有任何值被设置,但是不会覆盖已经存在的key。
只要有一个键没有设置成功,那么其他一起设置的键都不会设置成功。
(7)get
获取key对应的string值,如果key不存在返回nil。
getset
设置key的新值,并返回key的旧值。
(8)getrange
获取key的value值的子字符串。
(9)mget
一次获取多个key的值,如果对应key不存在则对应返回nil。
(10)incr
自增溢,对key的值做加加操作,并返回新的值。
(11)incrby
同incr类似,加指定值,key不存在时候会设置key,并认为原来的value是0。
(12)decr
对key的值做减减操作。
(13)decrby
同decr类似,减指定值。
(14)append
给指定key的字符串追加value,返回新字符串值的长度。
(15)strlen
取指定key的value值的长度。

2:Hashes类型及操作:

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

hset

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

127.0.0.1:6379> hset myhash field1 hello

(integer) 1

127.0.0.1:6379> hget myhash field1

"hello"

hsetnx

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

127.0.0.1:6379> hsetnx myhash field1 helloyou

(integer) 0

hmset

同时设置hash的多个field。

127.0.0.1:6379> hmset myhash field2 helloyou field3 hellome

OK

127.0.0.1:6379> hmget myhash field2 field3

1) "helloyou"

2) "hellome"

hincrby

指定的hashfield加上给定值。

127.0.0.1:6379> hset myhash field4 30

(integer) 1

127.0.0.1:6379> hincrby myhash field4 10

(integer) 40

127.0.0.1:6379> hget myhash field4

"40"

127.0.0.1:6379>

hexists

测试指定field是否存在。

127.0.0.1:6379> hexists myhash field1

(integer) 1

hlen

返回指定hash的field数量。

127.0.0.1:6379> hlen myhash

(integer) 4

hdel

删除指定hash的field。

127.0.0.1:6379> hdel myhash field4

(integer) 1

127.0.0.1:6379>

hkeys

返回hash的所有field。

127.0.0.1:6379> hkeys myhash

1) "field1"

2) "field2"

3) "field3"

hvals

返回hash的所有value。

127.0.0.1:6379> hvals myhash

1) "hello"

2) "helloyou"

3) "hellome"

(10)hgetall

获取某个hash中全部的field和value。

127.0.0.1:6379> hgetall myhash

1) "field1"

2) "hello"

3) "field2"

4) "helloyou"

5) "field3"

6) "hellome"

3:List类型及操作:

List是一个链表结构,主要功能是push,pop,获取一个范围的所有值等等,操作中Key理解为链表的名字。

Redis的list类型其实就是一个每个子元素都是string类型的双向链表。我们可以通过puth,pop操作从链表的头部或者尾部添加删除元素,这样list既可以作为栈,又可以作为队列。

对Redis的数据类型的介绍就到这里,还有两种数据类型,Set类型和Zset类型就不详细介绍了。
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。