【Redis2】Redis数据库的学习与实践—redis的数据类型
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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类型就不详细介绍了。