Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
1、String
string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。
string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。
string类型是Redis最基本的数据类型,一个键最大能存储512MB。
set:设置key的值 set aa "aa"//OK set bb "bb"//OK set age 1 //OK
del :删除key del age //1
get:获取key对应的值 get aa//"aa"
mget:批量获取多个key的值,如果可以不存在则返回nil mget aa bb//1) "aa" 2) "bb" mget aa cc//1) "aa" 2) (nil)
incr && incrby:incr对key对应的值进行++操作,并返回新的值;incrby加指定值 incr age //2 incrby age 3 //5
incr操作由于它的原子性,在高并发下的计数、秒杀等场景下使用非常方便。
2、Hash
hash 是一个键值对集合,是一个 string 类型的 key和 value 的映射表,key 还是key,但是value是一个键值对(key-value)。类比于 Java里面的 Map集合,特别适合用于存储对象型的数据。
hset:hset key field value将哈希表key中的域field的值设置为value,如果key不存在,则创建一个新的hash表。
hset hs k1 value1 //1
hget:hget key field 返回哈希表中给定域field的值
hget hs k1 //value1
hdel:hdel key dield 删除哈希表中给定域的值,不存在的域则忽略
hdel hs k1 //1
hexists:hexists key field 判断哈希表中是否存在field,存在返回1,不存在返回2
hgetall:hgetall key 返回哈希表key中所有的key,value
hincrby:hincrby key field value 将hash表key中的filed值加上value
3、List
List是每个子元素都是String类型的双向链表,可以通过push和pop操作从列表的头部或者尾部添加或者删除元素,这样list即可以作为栈,也可以作为队列。
lpush:lpush list v1 v2 v3...将1个或多个value插入到列表list的表头 lpush list v1 v2 v3 //3
lpushx:lpushx list v4 每次只能插入一个元素到表头,如果list不存在则忽略。lpushx list v4//4
lpop:lpop list 移除并返回列表list的头元素
lrange:lrange list 0 2 //
lrem:lrem list count value 删除list中值为value的元素,count大于0从头搜到尾,count小于0从尾搜到头,count为0时移除所有与value相同的元素
lset:lset list index value 将list中下标为index的元素的值设置为value
lset mylist 0 aaaaa //ok
lset mylist 100 aaaaa //(error) ERR index out of range
lindex:lindex list index
4、Set
在redis中,我们可以将set类型看做无序的字符集合,可包含最大元素数量为4294967295个,和list不同的是,set中不允许出现重复的元素。
sadd:sadd set value1 value2 ..将一个或者多个元素加入到set中,已存在的元素被忽略
sadd myset v1 v2 v3 //(integer) 3
scard:scard set 返回集合set的元素个数 scard myset //(integer) 3
sdiff:sdiff set 返回集合所有元素,sdiff set1 set2返回set1与set2的差集 sinter为交集
sdiffstore:sdiffstore destionation key ..与sdiff类似,但是会将返回的集合保存到指定的集合destionation 中,如果destionation已存在则覆盖 ,与之对应的有sinterstore
sinmember:sismember set value 判断set集合是否存在value 存在返回1不存在返回0
smembers:smembers set 返回集合set中所有元素
smove:smove sourceset destionationset value 将value从集合sourceset 移到集合destionationset 中,如果sourceset不存在value,则忽略操作,如果destionationset 已存在该元素,则只是将sourceset中的value删除
5、Zset
zset(sorted set 有序集合),和上面的set 数据类型一样,也是 string 类型元素的集合,但是它是有序的。
zadd :zadd zset score value [score value]将一个或多个 值及其权重添加到有序集合zset中,如果zset中已经存在value那么更新value的权重。
zadd zset 1 a 2 b 3 d 4 c //(integer) 4
zcard:zcard zset返回有序集合zset的元素个数 zcard zset ////(integer) 4
zcount:zcount zset min max 返回有序集合zset中权重大于等于min小于等于max的元素个数
zcount zset 2 3 //(integer) 2
zrange:zrange zset start end [withscores] 返回指定区间内的成员,并且按照权重进行排序,权重相同时按字典序返回,如果结尾带关键字withscores,那么将每个元素的权重也一并返回
zrange zset 0 -1 //1) "a" 2) "b" 3) "d" 4) "c"
zrange zset 0 -1 withscores //1) "a " ///2) "1" //3) "b" //4) "2" //5) "d" //6) "3" //7) "c" //8) "4"
zrank:zrank zset value返回value在有序集合zset中的排序,按权重从小到大进行排序,起始值为0
zrank zset c //(integer) 3
zrem:zrem zset value1 value2 ...移除有序集合zset中值为value1的元素,如果有序集合zset不存在该元素则忽略操作
zrem zset c //(integer) 1 zrem zset e //(integer) 0
zrange zset 0 -1 //1) "a" 2) "b" 3) "d"
网友评论