欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

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

程序员文章站 2022-05-17 14:25:12
...

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类型就不详细介绍了。