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



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

Redis的数据类型:

1Strings类型及操作:

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

  1Set方法,设置key对应的值为String类型的value

  例如:设置一个name=inter的键值对:

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

2Setnx在操作的时候,会首先判断这个name里面是否存在值,只有当name里面不包含值的情况下,才会设置成功。(nx代表not exist的意思)

  例如:

#第一种情况,setnx判断name存在值,所以后面的设值返回(integer)0,设值不成功

127.0.0.1:6379> set name inter

OK

127.0.0.1:6379> setnx name millan

(integer) 0

#对一个没有设过值的变量进行设值,返回(integer)1,通过get方法验证,设值成功

127.0.0.1:6379> setnx new_name inter

(integer) 1

127.0.0.1:6379> get new_name

"inter"

  3setex

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

在其他的设置方法中,不设置有效期,则代表其永久有效。

  例如:

#设置windvaluehot,并且设置时间为10秒,10秒之内有效,10秒过后,此键值对失效

127.0.0.1:6379> setex wind 10 hot

OK

127.0.0.1:6379> get wind

"hot"

127.0.0.1:6379> get wind

(nil)

  4setrange

  设置指定keyvalue值的子字符串

127.0.0.1:6379> set name djy@163.com

OK

127.0.0.1:6379> setrange name 4 gmail.com

(integer) 13

127.0.0.1:6379> get name

"djy@gmail.com"

  5mset

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

127.0.0.1:6379> mset key1 djy1 key2 djy2 key3 djy3

OK

127.0.0.1:6379> get key2

"djy2"

127.0.0.1:6379> get key3

"djy3"

127.0.0.1:6379> get key1

"djy1"

  6msetnx

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

127.0.0.1:6379> msetnx key1 djyisasmartguy key5 yes

(integer) 0

127.0.0.1:6379> get key5

(nil)

127.0.0.1:6379> get key1

"djy1"

  只要有一个键没有设置成功,那么其他一起设置的键都不会设置成功。

  7get

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

       getset

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

127.0.0.1:6379> getset key1 djyisasmartguy

"djy1"

127.0.0.1:6379> get key1

"djyisasmartguy"

  8getrange

  获取keyvalue值的子字符串。

127.0.0.1:6379> getrange key1 8 10

"art"

127.0.0.1:6379>

  9mget

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

127.0.0.1:6379> mget key1 key2

1) "djyisasmartguy"

2) "djy2"

  10incr

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

127.0.0.1:6379> set key5 10

OK

127.0.0.1:6379> incr key5

(integer) 11

  11incrby

  incr类似,加指定值,key不存在时候会设置key,并认为原来的value0

#incrby key5 10是指增溢10次,如果是-10就是减10

127.0.0.1:6379> incrby key5 10

(integer) 21

127.0.0.1:6379> get key5

"21"

  12decr

  key的值做减减操作。

  13decrby

  decr类似,减指定值。

127.0.0.1:6379> decr key5

(integer) 20

127.0.0.1:6379> decrby key5 6

(integer) 14

  14append

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

127.0.0.1:6379> get key1

"djyisasmartguy"

127.0.0.1:6379> append key1 true

(integer) 18

127.0.0.1:6379> get key1

"djyisasmartguytrue"

15strlen

取指定keyvalue值的长度。

127.0.0.1:6379> strlen key1

(integer) 18

 

2:Hashes类型及操作:

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

  1. hset

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

127.0.0.1:6379> hset myhash field1 hello

(integer) 1

127.0.0.1:6379> hget myhash field1

"hello"

  1. hsetnx

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

127.0.0.1:6379> hsetnx myhash field1 helloyou

(integer) 0

  1. 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"

  1. 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>

  1. hexists

测试指定field是否存在。

127.0.0.1:6379> hexists myhash field1

(integer) 1

  1. hlen

返回指定hashfield数量。

127.0.0.1:6379> hlen myhash

(integer) 4

  1. hdel

删除指定hashfield

127.0.0.1:6379> hdel myhash field4

(integer) 1

127.0.0.1:6379>

  1. hkeys

返回hash的所有field

127.0.0.1:6379> hkeys myhash

1) "field1"

2) "field2"

3) "field3"

  1. hvals

返回hash的所有value

127.0.0.1:6379> hvals myhash

1) "hello"

2) "helloyou"

3) "hellome"

  10hgetall

获取某个hash中全部的fieldvalue

127.0.0.1:6379> hgetall myhash

1) "field1"

2) "hello"

3) "field2"

4) "helloyou"

5) "field3"

6) "hellome"


3:List类型及操作:

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

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

  对Redis的数据类型的介绍就到这里,还有两种数据类型,Set类型和Zset类型就不详细介绍了。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值