Redis【Redis数据类型(String、List、Set、Hash 、Zset)】(二) |
您所在的位置:网站首页 › js基础总结 › Redis【Redis数据类型(String、List、Set、Hash 、Zset)】(二) |
目录 Redis数据类型_String set get append strlen setex setnx getrange setrange incr decr incrby/decrby key step mset mget getset Redis数据类型_List lrange lpop/rpop lindex llen lrem linsert lset Redis数据类型_Set smembers sismember scard srem spop srandmember smove sinter sunion sdiff Redis数据类型_Hash 简介 常用命令 hset hget hmset hexists hkeys hvals key hincrby hdel hsetnx Redis数据类型_Zset 简介 常用命令 zadd zrange zrangebyscore zincrby zrem zcount zrank Redis数据类型_String简介 String是Redis最基本的类型,一个key对应一个value。String是二进制安全的,意味着String可以包含 任何数据,比如序列化对象或者一张图片。String最多可以放512M的数据。 常用命令 set用于设置给定 key 的值。如果 key 已经存储其他值, set 就重写旧值,且无视类型。 语法格式: set key value示例: 127.0.0.1:6379> set k1 v1 OKget用于获取指定 key 的值。如果 key 不存在,返回 nil 。 语法格式: get key示例: 127.0.0.1:6379> get k1 "v1"append将给定的value追加到key原值末尾。 语法格式: append key value示例: 127.0.0.1:6379> APPEND k1 k1 (integer) 4 127.0.0.1:6379> APPEND k1 k2 (integer) 6注意: 如果 key 已经存在并且是一个字符串, append 命令将 value 追加到 key 原来的值的末尾。如果 key 不存在, append 就简单地将给定 key 设为 value ,就像执行 set key value 一 样。strlen获取指定 key 所储存的字符串值的长度。当 key 储存的不是字符串值时,返回一个错误。 语法格式: strlen key示例: 127.0.0.1:6379> strlen k1 (integer) 6setex给指定的 key 设置值及time 秒的过期时间。如果 key 已经存在, setex命令将会替换旧的值,并设置过 期时间。 语法格式: setex key time value示例: #向Redis中设置一个k1的键值对并且10秒后过期 127.0.0.1:6379> setex k1 10 v1 OKsetnx只有在key不存在时设置key的值 语法格式: setnx key value示例: 127.0.0.1:6379> setnx k1 v1 (integer) 0 127.0.0.1:6379> setnx k4 v4 (integer) 1getrange获取指定区间范围内的值,类似between........and 的关系 语法格式: getrange key start end示例: 127.0.0.1:6379> set k5 abcd123xxx OK 127.0.0.1:6379> getrange k5 2 4 "cd1"setrange获取指定区间范围内的值,类似between........and 的关系 语法结构: setrange key offset value示例: 127.0.0.1:6379> set k6 abcd1234 OK 127.0.0.1:6379> setrange k6 1 xxx (integer) 8 127.0.0.1:6379> get k6 "axxx1234"incr将 key 中储存的数字值增一。 语法格式: incr key示例: #因为Redis中不存在k1,所以先初始化为0,再递增,值为1 127.0.0.1:6379> incr k1 (integer) 1 # incr k1 存在k1,递增后k1的值为2 127.0.0.1:6379> incr k1 (integer) 2 # 如果value不是数字就会报错 127.0.0.1:6379> set k2 v2 OK 127.0.0.1:6379> INCR k2 (error) ERR value is not an integer or out of range注意: 如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 incr 操作。 如字符串类型的值不能表示为数字、或者是其他类型,那么返回一个错误。 decr将 key 中储存的数字值减一。 语法格式: decr key示例: 127.0.0.1:6379> decr k1 (integer) 1 127.0.0.1:6379> decr k1 (integer) 0 127.0.0.1:6379> decr k1 (integer) -1 127.0.0.1:6379> decr k1 (integer) -2 #如果 set k2 v2 decr k2 因为k2不为数值,Redis返回一个错误注意: 如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 decr 操作。 如字符串类型的值不能表示为数字、或者是其他类型,那么返回一个错误。 incrby/decrby key step将key存储的数字值按照step进行增减。 127.0.0.1:6379> incrby k1 10 (integer) 20注意: 如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 incrby/decrby 命令。 如字符串类型的值不能表示为数字、或者是其他类型,那么返回一个错误。 mset同时设置一个或多个 key-value 。 语法格式: mset key1 value1 key2 value2示例: 127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3 OKmget返回所有(一个或多个)给定 key 的值。 语法格式: mget key1 key2示例: 127.0.0.1:6379> mget k1 k2 k3 1) "v1" 2) "v2" 3) "v3"注意: 如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil 。 getset将给定key值设为value,并返回key的旧值(old value),简单一句话(先get然后立即set)。 语法格式: getset key value示例: 127.0.0.1:6379> getset k1 wcc "v1" 127.0.0.1:6379> get k1 "wcc"使用场景 value 除了是字符串以外还可以是数字。计数器统计多单位的数量粉丝数对象缓存存储分布式锁实时学习反馈 1.Redis技术String数据类型中如何设置给定 key 的值。 A get B append C set D mget 2. Redis技术String数据类型中如何只有在key不存在时设置key的值。 A get B append C setnx D mget Redis数据类型_List简介 List是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右 边)。底层是一个双向链表,对两段操作性能极高,通过索引操作中间的节点性能较差。 一个List最多可以包含 $2^{32}-1$个元素 ( 每个列表超过40亿个元素)。 常用命令 lpush/rpush 从左边(头部)/右边(尾部)插入一个或多个值。 语法结构: lpush/rpush key1 value1 value2 value3……示例: #从左边放入v1 v2 v3 127.0.0.1:6379> lpush k1 v1 v2 v3 (integer) 3
返回key列表中的start和end之间的元素(包含start和end)。 其中 0 表示列表的第一个元素,-1表示 最后一个元素。 语法结构: lrange key start end示例: #取出列表里前3个值,结果为v3 v2 v1 127.0.0.1:6379> lrange k1 0 2 #取出列表里全部值,结果为v3 v2 v1 v4 v5 v6 127.0.0.1:6379> lrange k1 0 -1lpop/rpop移除并返回第一个值或最后一个值。 语法格式: lpop/rpop key示例: lpop k1 从列表中删除v3,并返回,当前列表全部值v2 v1 v4 v5 v6 rpop k1 从列表中删除v6,并返回,当前列表全部值v2 v1 v4 v5 注意: 值在键在,值光键亡。 lindex获取列表index位置的值(从左开始)。 语法结构: lindex key index示例: lindex k1 0llen获取列表长度。 语法结构: llen key示例: 127.0.0.1:6379> llen k1 (integer) 6lrem从左边开始删除与value相同的count个元素。 语法结构: lrem key count value示例: #从左边开始删除k1列表中2个v1元素 lrem k1 2 v1linsert在列表中value值的前边/后边插入一个new value值(从左开始)。 语法结构: linsert key before/after value newvalue示例: linsert k1 before v1 v5 在v1前面插入一个v5lset将索引为index的值设置为value 语法结构: lset key index value示例: lset key index value使用场景 消息队列排行榜最新列表实时学习反馈 1. Redis技术List数据类型中如何插入一个或多个值。 A lpush/rpush B llen C lset D lrem 2. Redis技术List数据类型中如何移除并返回第一个值或者最后一个值。 A lpush/rpush B llen C lset D lpop/rpop Redis数据类型_Set简介 与List类似是一个列表功能,但Set是自动排重的,当需要存储一个列表数据,又不希望出现重复数据 时,Set是一个很好的选择。 Set是String类型的无序集合,它底层其实是一个value为null的hash表,所以添加、删除、查找的时间 复杂度都是O(1)。 常用命令 sadd 将一个或多个元素添加到集合key中,已经存在的元素将被忽略。 语法结构: sadd key value1 value2……示例: #向集合中添加值,最终只有v1 v2 v3 v4 v5 v6 127.0.0.1:6379> sadd k1 v1 v2 v2 v3 v4 v5 v6smembers取出该集合的所有元素。 语法结构: smembers key示例: 127.0.0.1:6379> smembers k1sismember判断集合key中是否含有value元素,如有返回1,否则返回0。 语法结构: sismember key value示例: sismember k1 v1scard返回该集合的元素个数。 语法结构: scard key示例: scard k1srem删除集合中的一个或多个成员元素,不存在的成员元素会被忽略。 语法结构: srem key value1 value2……示例: # 删除v1 v2 srem k1 v1 v2spop随机删除集合中一个元素并返回该元素。 语法结构: spop key示例: spop k1 随机删除一个元素,并返回srandmember随机取出集合中count个元素,但不会删除。 语法结构: srandmember key count示例: #随机取出集合中的2个元素 srandmember k1 2smove将value元素从sourcekey集合移动到destinationkey集合中。 语法结构: smove sourcekey destinationkey value示例: smove k1 k2 v5 将元素v5从集合k1中移动到集合k2注意: 如果 sourcekey集合不存在或不包含指定的 value元素,则 smove 命令不执行任何操作,仅返回 0 。 sinter返回两个集合的交集元素。 语法结构: sinter key1 key2示例: sinter key1 key2sunion返回两个集合的并集元素。 语法结构: sunion key1 key2示例: sunion k1 k2sdiff返回两个集合的差集元素(key1中的,不包含key2) 语法结构: sdiff key1 key2示例: sdiff k1 k2使用场景 黑白名单随机展示好友关注人粉丝感兴趣的人集合实时学习反馈 1. Redis技术Set数据类型中将一个或多个元素添加到集合key中。 A spop B sinter C sdiff D sadd 2. Redis技术Set数据类型中如何取出该集合的所有元素。 A spop B smembers C sdiff D sadd Redis数据类型_HashHash是一个键值对的集合。Hash 是一个 String 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。 给key集合中的field赋值value。 语法结构: hset key field value 示例: 127.0.0.1:6379> hset user name xiaoton(integer) 1 127.0.0.1:6379> hset user age 3 (integer) 1 从key哈希中,取出field字段的值。 语法结构: hget key field 示例: 127.0.0.1:6379> hget user name"xiaoton" hmset批量设置哈希的字段及值。 语法结构: hmset key field1 value1 field2 value2…… 示例: 127.0.0.1:6379> hmset user1 name xiaoton age 15OK hexists判断指定key中是否存在field 语法结构: hexists key field 示例: 127.0.0.1:6379> hexists user1 name(integer) 1 127.0.0.1:6379> hexists user1 xxx (integer) 0 获取该哈希中所有的field。 语法结构: hkeys key 示例: 127.0.0.1:6379> hkeys user11) "name" 2) "age" hvals key获取该哈希中所有的value。 语法结构: hvals key 示例: 127.0.0.1:6379> hvals user11) "xiaoton" 2) "15" hincrby为哈希表key中的field字段的值加上增量increment。 语法结构: hincrby key field increment 示例: 127.0.0.1:6379> hincrby user1 age 10(integer) 25 删除哈希表 key 中的一个或多个指定字段,不存在的字段将被忽略。 语法结构: hdel key field1 field2…… 示例: 127.0.0.1:6379> hdel user1 age(integer) 1 hsetnx给key哈希表中不存在的的字段赋值 。 语法结构: hsetnx key field value 示例: 127.0.0.1:6379> hsetnx user1 age 10(integer) 1 使用场景 1、购物车 2、存储对象 实时学习反馈 1. Redis技术Hash数据类型中如何给key集合中的field赋值value。 A hdel B hsetnx C hexists D hset 2. Redis技术Hash数据类型中如何从key哈希中,取出field字段的值。 A hdel B hsetnx C hexists D hget Redis数据类型_ZsetZset与Set非常相似,是一个没有重复元素的String集合。不同之处是Zset的每个元素都关联了一个分数 (score),这个分数被用来按照从低分到高分的方式排序集合中的元素。集合的元素是唯一的,但分数可以重复。 将一个或多个元素(value)及分数(score)加入到有序集key中。 语法结构: zadd key score1 value1 score2 value2…… 示例: zadd k1 100 java 200 c++ 300 python 400 php 返回key集合中的索引start和索引end之间的元素(包含start和end)。 语法结构: zrange key start end [withscores] 示例: zrange k1 0 -1 返回集合中所有元素zrange k1 0 -1 withscores 返回集合中所有元素,并携带元素分数 返回key集合中的分数minscore 和分数maxscore 之间的元素(包含minscore 和maxscore )。其中元素的位置按分数值递增(从小到大)来排序。 语法结构: zrangebyscore key minscore maxscore [withscores] 示例: zrangebyscore k1 200 400 返回200-400分之间的元素递增排序 zincrby为元素value的score加上increment的值。 语法结构: zincrby key increment value 示例: zincrby k1 50 java 给java元素加上50分 zrem删除该集合下value的元素。 语法结构: zrem k1 php 删除php zcount统计该集合在minscore 到maxscore分数区间中元素的个数。 语法结构: zcount key minscore maxscore 示例: zcount k1 100 300 统计100分到300分中间元素的个数 zrank返回value在集合中的排名,从0开始。 语法结构: zrank key value 示例: zrank k1 c++ 返回c++排名 实时学习反馈 1. Redis技术Zset数据类型中如何给将一个或多个元素(value)及分数(score)加入到有序集key 中。 A zadd B zrange C zrangebyscore D zcount 2. Redis技术Zset数据类型中如何返回key集合中的索引start和索引end之间的元素。 A zadd B zrange C zrangebyscore D zcount |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |