redis支持五种数据类型:string(字符串)、hash(哈希)、list(列表)、set(无序集合)、zset(sorted set:有序集合)
linux-redis执行: docker exec -it redis-test /bin/bash redis-cli1、string(字符串)
string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。
string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。
string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。
#设置指定key的值,没有时长 set key value set key-name1 value-param1 #设置指定key的值,并将key的过期时间设为 seconds (以秒为单位) setex key seconds value setex key-name2 10 value-param2 #设置指定key的值,并将key的过期时间设为 milliseconds (以秒为单位) psetex key milliseconds value psetex key-name3 1000 value-param3 #获取指定key值 get key get key-name1 #获取所有(一个或多个)给定key的值 mget key1 [key2...] mget key-name1 key-name2 #将给定的key的 值设为value,并返回key的旧值(old value) getset key value getset key-name1 value-param4 #删除一个key(del五种类型的数据都能删除) del key1 [key2...] del key-name1
Redis hash 是一个键值(key=>value)对集合。
Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。
Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。
#同时将多个 field-value (域-值)对设置到哈希表 key 中。 hset key field1 value1 [field2 value2...] hset employee no cd01 name gongyg #同时将多个 field-value (域-值)对设置到哈希表 key 中。 hmset key field1 value1 [field2 value2] hmset user id 1 name gumd #获取存储在哈希表中指定字段的值。 hget key field hget user id #获取所有给定字段的值 hmget key field1 [field2...] hmget user id name #获取在哈希表中指定 key 的所有字段和值 hgetall key hgetall user #获取所有哈希表中的字段 hkeys key hkeys user #获取哈希表中字段的数量 hlen key hlen user #获取哈希表中所有值。hvals key hvals user
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)。
#在列表中添加一个或多个值【插入尾部】 rpush key value1 [value2...] rpush employee gyg gmd #为已存在的列表添加值[必须是存在的key]【插入尾部】 rpushx key value rpushx employee gxy gxh #将一个值插入到已存在的列表头部[必须是存在的key] lpushx key value lpushx orgunit org3 org4 #将一个或多个值插入到列表头部 lpush key1 value1 [value2...] lpush orgunit org1 org2 #移出并获取列表的第一个元素 lpop key [count] lpop orgunit #移除列表的最后一个元素,返回值为移除的元素。 rpop key [count] rpop orgunit #移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。 blpop key1 [key2...] timeout blpop orgunit 1 #移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。brpop key1 [key2...] timeout brpop orgunit 1 #获取列表长度 llen key llen orgunit #通过索引获取列表中的元素 lindex key index lindex orgunit 0 #获取列表指定范围内的元素 lrange key start stop lrange orgunit 0 2
Redis 的 Set 是 string 类型的无序集合。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
集合成员是唯一的,这就意味着集合中不能出现重复的数据。
集合中最大的成员数为 232 - 1(4294967295, 每个集合可存储40多亿个成员)。
#向集合添加一个或多个成员 sadd key member1 [member2...] sadd post post1 post2 #获取集合的成员数 scard key scard post #返回集合中的所有成员 smembers key smembers post #移除集合中一个或多个成员 srem key member1 [member2...] srem post post1
Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
#向有序集合添加一个或多个成员,或者更新已存在成员的分数 zadd key score1 member1 [score2 member2...] zadd trace 1 jd1 3 jd3 2 jd2 7 jd7 9 jd9 6 jd6 8 jd8 4 jd4 5 jd5 #获取有序集合的成员数 zcard key zcard trace #通过索引区间返回有序集合指定区间内的成员 zrange key start stop zrange trace 0 2 #通过分数返回有序集合指定区间内的成员 zrangebyscore key min max zrangebyscore trace 7 8 #返回有序集合中指定成员的索引 zrank key member zrank trace jd4 #返回有序集中指定区间内的成员,通过索引,分数从高到低 zrevrange key start stop zrevrange trace 1 4 #返回有序集中指定分数区间内的成员,分数从高到低排序 zrevrangebyscore key max min zrevrangebyscore trace 6 4 #返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序 zrevrank key member zrevrank trace jd5 #返回有序集中,成员的分数值 zscore key member zscore trace jd8 #移除有序集合中的一个或多个成员 zrem key member1 [member2...] zrem trace jd8 #移除有序集合中给定的分数区间的所有成员 zremangebyscore key start stop zremrangebyscore trace 4 5