Redis的数据类型:1:Strings类型及操作: String类型是最简单的类型,一个Key对应一个Value,String类型是二进制安全的。Redis的String可以包含任何数据,比如jpg图片或者序列化的对象。 (1)Set方法,设置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 (2)Setnx在操作的时候,会首先判断这个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" |
(3)setex 设置key对应的值为string类型的value,并指定此键值对对应的有效期。 在其他的设置方法中,不设置有效期,则代表其永久有效。 例如: #设置wind的value是hot,并且设置时间为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) |
(4)setrange 设置指定key的value值的子字符串 OK 127.0.0.1:6379> setrange name 4 gmail.com (integer) 13 127.0.0.1:6379> get name "djy@gmail.com" |
(5)mset 一次设置多个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" |
(6)msetnx 一次设置多个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" |
只要有一个键没有设置成功,那么其他一起设置的键都不会设置成功。 (7)get 获取key对应的string值,如果key不存在返回nil。 getset 设置key的新值,并返回key的旧值。 127.0.0.1:6379> getset key1 djyisasmartguy "djy1" 127.0.0.1:6379> get key1 "djyisasmartguy" |
(8)getrange 获取key的value值的子字符串。 127.0.0.1:6379> getrange key1 8 10 "art" 127.0.0.1:6379> |
(9)mget 一次获取多个key的值,如果对应key不存在则对应返回nil。 127.0.0.1:6379> mget key1 key2 1) "djyisasmartguy" 2) "djy2" |
(10)incr 自增溢,对key的值做加加操作,并返回新的值。 127.0.0.1:6379> set key5 10 OK 127.0.0.1:6379> incr key5 (integer) 11 |
(11)incrby 同incr类似,加指定值,key不存在时候会设置key,并认为原来的value是0。 #incrby key5 10是指增溢10次,如果是-10就是减10次 127.0.0.1:6379> incrby key5 10 (integer) 21 127.0.0.1:6379> get key5 "21" |
(12)decr 对key的值做减减操作。 (13)decrby 同decr类似,减指定值。 127.0.0.1:6379> decr key5 (integer) 20 127.0.0.1:6379> decrby key5 6 (integer) 14 |
(14)append 给指定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" |
(15)strlen 取指定key的value值的长度。 127.0.0.1:6379> strlen key1 (integer) 18 |
2:Hashes类型及操作: Redis hash是一个string类型的field和value的映射表。它的添加,删除操作都是0(1)(平均)。Hash特别适合用于存储对象。相较于将对象的每个字段存成单个string类型。将一个对象存储在hash类型中会占用更少的内存,并且可以更方便的存取整个对象。 设置hash field为指定值,如果key不存在,则先创建。 127.0.0.1:6379> hset myhash field1 hello (integer) 1 127.0.0.1:6379> hget myhash field1 "hello" |
设置hash field为指定值,如果key不存在,则先创建。如果存在返回0。 127.0.0.1:6379> hsetnx myhash field1 helloyou (integer) 0 |
同时设置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" |
指定的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> |
测试指定field是否存在。 127.0.0.1:6379> hexists myhash field1 (integer) 1 |
返回指定hash的field数量。 127.0.0.1:6379> hlen myhash (integer) 4 |
删除指定hash的field。 127.0.0.1:6379> hdel myhash field4 (integer) 1 127.0.0.1:6379> |
返回hash的所有field。 127.0.0.1:6379> hkeys myhash 1) "field1" 2) "field2" 3) "field3" |
返回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类型就不详细介绍了。
|