Redis一共分为五种基本数据类型:String,Hash,List,Set,ZSet
1.String类型
String类型是包含很多种类型的特殊类型,并且是二进制安全的,比如序列化的对象进行存储,比如一张图片进行二进制存储,比如一个简单的字符串,数值等等~
set和get方法:
设置值:set key value 取值:get key(说明 设置key多次会覆盖) 删除值:del key
使用setnx(not exist)
name如果不存在就进行设置,如果存在就不进行设置了,返回0
127.0.0.1:6379> set name zhangsan OK 127.0.0.1:6379> setnx name lisi (integer) 0 127.0.0.1:6379>
使用setex(expired)
setex color 10 red设置color的有效期为10秒,10秒后返回nil(在Redis中nil表示空)
使用setrange替换字符串:
set email [email protected]
setrange email 10 ww (10表示从第几位开始替换,后面跟上替换的字符串,从0开始)
127.0.0.1:6379> set email 1048158229@qq.com OK 127.0.0.1:6379> setrange email 10 ww (integer) 17 127.0.0.1:6379> get email "1048158229wwq.com" 127.0.0.1:6379>
使用一次性设置多个和获取多个值得mset,mget方法
mset key1 value1 key2 value2 key3 value3
对应的mget key1 key2 key3
127.0.0.1:6379> mset name zhangsan age 20 sex 0 OK 127.0.0.1:6379> mget name age sex 1) "zhangsan" 2) "20" 3) "0" 127.0.0.1:6379>
一次性设置和取值的getset
127.0.0.1:6379> set name zhangsan OK 127.0.0.1:6379> getset name lisi "zhangsan" 127.0.0.1:6379>
返回旧值并设置新值
incr和decr方法:对某一个值进行递增和递减(incr/decr key)
incrby和decrby方法:对某个值进行指定长度的递增和递减(incrby/decrby key 步长)
append[name]方法:字符串追加方法(append key ‘str‘)
strlen[name]方法:获取字符串的长度(strlen key)
2.Hash类型
Hash类型是String类型的field和value的映射表,或者说一个String集合。它特别适合存储对象,相比较而言,将一个对象类型存储在Hash类型里要比存储在String类型里占用更少的内存空间,并方便存取整个对象。
形如:hset myhash key value(含义是hset是hash集合,myhash是集合名字,key是字段名,value是其值),使用hget myhash key获取内容,也可以存储多个值。
hmset可以进行批量存储多个键值对,hmset myhash key1 value1 key2 value2,也可以使用hmget进行批量获取多个键值对。
同样也有hsetnx,和setnx大同小异。
hincrby和hdecrby集合递增和递减
hexists是否存在key,如果存在就返回,不存在就返回0
hlen返回hash集合里的所有的键数值
hdel删除指定hash的key
hkeys返回hash里的所有字段
hvals返回hash里的所有value
hgetall返回hash里所有的key和value
3.List类型
List类型是一个链表结构的集合,其主要功能是push,pop,获取元素等。更详细的说,List类型是一个双端链表的结构,我们可以通过相关操作进行集合的头部或尾部添加删除元素,list的设计非常简单精巧,既可以作为栈,又可以作为队列,满足绝大多数需求。
lpush方法:从头部加入元素(栈),先进后出
形如:
127.0.0.1:6379> lpush list1 ‘hello‘ (integer) 1 127.0.0.1:6379> lpush list1 ‘world‘ (integer) 2 127.0.0.1:6379> lpush list1 ‘welcome‘ (integer) 3 127.0.0.1:6379> lrange list1 0 -1 1) "welcome" 2) "world" 3) "hello" 127.0.0.1:6379>
(0 -1表示从头取到末尾)
rpush方法:从尾部加入元素(队列),先进先出
形如:
127.0.0.1:6379> rpush list2 ‘hello‘ (integer) 1 127.0.0.1:6379> rpush list2 ‘world‘ (integer) 2 127.0.0.1:6379> rpush list2 ‘welcome‘ (integer) 3 127.0.0.1:6379> lrange list2 0 -1 1) "hello" 2) "world" 3) "welcome" 127.0.0.1:6379>