五大数据类型分别是:String,List , set, hash, zset
一、String
String类型简介
- 最基本的类型。
- 类型是二进制安全的。可以包含任意数据类型,比如图片和序列化对象。
- 一个String的value最多可以使512M。
String类型基本操作指令1
- get <key> 获取键所对应的的值。
- set <key> <value> 设置键所对应的的值。
- append <key> <value> 追加一个键值对。
- strlen <key> 值的长度
- setnx <key> <value> 只在key不存在时设置key的值
- incr <key> key中数字值增1
- decr <key> key中数字值减1
- incrby / decrby <key> <步长> key中数字值增/减 步长
原子性,指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何context switch
(1)在单线程中,能够在单条指令中完成的操作都可以认为是“原子操作”,因为中断只能发生于指令之间。
(2)在多线程中,不能被其他进程(线程)打断的操作叫原子操作
String类型基本操作指令2
- mset <key1> <value1> <key2> <value2>...:同时设置一个或多个 key-value对
- mget <key1> <key2>...:同时获取一个或多个 value
- msetnx <key1> <value1> <key2> <value2>...:同时设置一个或多个 key-value,当且仅当key都不存在才能添加成功
- getrange <key> <起始位置> <结束位置>:获得值的范围,类似java中的substring
- setrange <key> <起始位置> <value> :用<value>覆写 <key>所存储的字符值,从起始位置开始。
- setex <key> <过期时间> <value>:设置键值,设置过期时间
- getset <key> <value>:以新换旧。设置了新值,同事显示旧知。
二、List
List类型简介
- 单键多值
- 只能存字符串,按照插入顺序排序
- 底层是个双向链表。对两端的操作性能很高。索引操作中间的节点性能会较差。
List类型基本操作指令
- lpush/rpush <key> <value1> <value2>...:从左边或右边插入一个或多个值。
- lpop/rpop <key>:从左边/右边弹出一个值。
- 值在健在,值光键亡。
- rpoplpush <key1> <key2>:从key1右边弹出一个值,插到key2左边。
- lrange <key> <start> <end>:按照索引下标获得元素(从左到右),例如 lrange key 0 -1,从左到右全部元素
- lindex <key> <index>:按照索引下标获得元素(从左到右),例如 lindex key -1 ,从左到右全部元素
- llen <key> 获得列表长度
- linsert <key> before/after <value> <newvalue>:在value的前/后插入值newvalue
- lrem <key> n <value>:从左边删除n个value(从左到右)。例如,lrem key 正数n value 从左开始删除n个value
- lrem key 负数n value 从左开始删除n个value
- lrem key 0 value 删除所有value
三、set
set类型简介
- set是一个列表
- set是可以自动排重的。
- Set是string类型的无序集合。底层是一个value为null的hash表,添加、删除、查找复杂度都是O(1).
set类型基本操作指令
- sadd <key> <value1> <value2> ..将一个或多个member元素加入到集合key当中 ,已经存在于集合中的元素将被忽略
- smembers <key> 取出该集合的所有值
- sismember <key> <value> 集合<key>中是否存在value
- scard <key> 返回该集合的元素个数
- srem <key> <value1> <value2> ..删除集合中某个元素
- spop <key> 随机从集合中弹出一个值,会从集合中删除
- srandmember <key> <n> 随机从集合中弹出n个值,不会从集合中删除
- sinter <key1> <key2> 返回两个集合的交集元素
- sunion <key1> <key2>返回两个集合的并集元素
- sdiff <key1> <key2>返回两个集合的差集元素
四、hash
hash类型简介
- 一个键值对集合
- 一个string类型的field和value映射表,特别适合用于存储对象。
- 类似java里面的Map<String, String>
hash类型基本操作指令
- hset <key> <field> <value>给key集合中的field键赋值value。例如 hset userInfo user:1001:username admin user:1001:password 123456
- hget <key1> <field>从key1集合中获取field的值
- hmset <key1> <field1> <value1> <field2> <value2>批量设置hash的值
- hexists key <field> 查看key中给定field中是否存在
- hkeys <key> 列出该hash集合的所有field
- hvals <key>列出该hash集合的所有value
- hincrby <key> <field> <increment>
- 为key中的域field的值加上增量increment
- hsetnx <key> <field> <value>将key中的域field的值设置为value,当且仅当key中field不存在时设置。
客户端显示中文:
redis中如果存储中文,客户端中显示不了,登录redis客户端加参数--raw。即 redis-cli --raw
五、zset
zset类型简介
- 有序集合,
- 没有重复元素
- 每个成员都关联了一个评分,评分是可以重复的。
zset类型基本操作指令
- zadd <key> <score1> <value1> <score2> <value2> <score3> <value3> ...将一个或多个member元素及其score值
- zrange <key> <start> <stop>返回key中下标在<start> <stop>之间的元素
- zrangebyscore key min max返回key中所有score值介于min max之间(包括等于min或max)的成员
- zrevrangebyscore key max min 同上,改为从大到小排列
- zincrby <key> <increment> <value>将key元素的value对应的分数加上增量increment
- zrem <key> <value>删除key的value
- zcount <key> <min> <max>统计分数区间内元素个数
- zrank <key> <value>返回value按照score大小的排名,从0开始