Redis数据类型
redis使用的是键值对来保存数据
key
:全部都是字符串。
value
:有五种数据类型
key名需要自定义
key名不要太长,否则影响使用效率。
按长度以小到大来查询。
key名也不要太短,最好是有意义的名字。
String(字符串)
string 是redis最基本的类型,一个key
对应一个value
。
字符串在redis中是二进制安全的,所以redis的string类型可以保存任何数据。
比如jpg
图片或者json
数据。
一个键最大能存储512MB。
二进制安全和数据安全是没有关系的。
MySQL-关系型数据库,二进制不安全。
Redis编码及解码只会发生在客户端,没有频繁编解码,执行效率很高。
没有频繁编解码,不会出现乱码。
常用命令
set key value
赋值,如果赋予相同的key值,新的value会覆盖老的value。get key
取值,若key不存在,就返回nil
。del key
删除指定key。getset key value
先获取该key的值,然后再设置该key的值。incr key
将指定的key的value原子性的递增1,若key不存在,初始值为0,incr后增1。decr key
将制定的key的value原子性的递减1。append key value
拼凑字符串,若key不存在,则创建key。返回拼接后字符串的长度。incrby key increment
将指定的key的value原子性增加increment。decrby key decrement
将指定的key的value原子性减少increment。
使用环境
- 主要用于保存json格式的字符串。
Hash(哈希)
一个键值对(key=》value)集合。
Redis hash是一个string类型的field
和value
的映射表。hash特别适用于存储对象。
每个hash可以存储2的32次方-1个键值对(40多亿)。
占用的磁盘空间极少。
常用命令
hset key field value
为指定的key设置field/value对。hmset key field value [field2 value2...]
设置keyzhong多个键值对hget key field
返回指定key中的field值。hmget key field1 field2
返回指定field的value。hgetall key
返回全部键值对。hdel key field1
删除key中的field1字段。若key中只有一个field1字段,那么key将会被直接删除。del key
删除整个key。hincrby key field increment
若field的value数字,那么自增1。hexists key field
判断某字段是否存在。hlen key
获取key包含有多少字段。hkeys key
获取所有的字段。hvals key
获取所有的字段值。
List
Redis列表是最简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部和尾部。
链表 添加删除效率极高。
Set
Redis的Set是string
类型的无序集合。
可以理解为HshaSet
集合是通过哈希表实现的,所以添加、删除,查找的复杂度都是O(1)
。
sadd
添加一个 string 元素到 key 对应的 set 集合中,成功返回1,如果元素已经在集合中返回 0,如果 key 对应的 set 不存在则返回错误。
集合中最大的成员数为 232 - 1(4294967295, 每个集合可存储40多亿个成员)。
zset
Redis zset和set一样都是string
类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。
redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数却可以重复。