Java面试题 Redis中有哪些数据类型?
redis 支持 五种 数据类型:
string (字符串) ,hash(哈希),list(列表),set(集合),zset (有序集合)
string (字符串) (最常用)
string 是redis中最常用的数据类型,是二进制安全的。意思是redis的string可以存取任何数据。比如jpg图片或者序列化的对象。
string 类型是redis中最基本的数据类型,一个键最大能存储512MB。
字符串常用命令
对应命令 | 解释 |
---|---|
SET keyname value | 设置一个键值对,keyname为键名,value为储存的值 |
GET keyname | 获取指定key对应的值,keyname为键值名 |
GETSET keyname value | 将指定key的值设为value,同时返回该key原来的旧值 |
MGET key1 key2... | 获取所有给定key的值 |
GETRANGE key start end | 获取指定key里的截取字符串,start为起始位置,end为结束位置 |
STRLEN keyname | 获取指定key里存储字符串的长度 |
INCR keyname | 给指定key里储存的数字增1 |
APPEND keyname value | 给指定key里面存储的字符串末尾加上value |
Hash(哈希)(常用)
hash 是一个键值(key=>value)对集合。
hash 是一个 string 类型的key 和 value 的映射表 ,hash 适合储存对象,相当于java 中Map 集合。
哈希(hash)命令
命令 | 描述 |
---|---|
HMSET key field1 "value1".... | 同时将多个field-value(域-值)对设置到哈希表key中 |
HDEL key fileld1 fileld2 .... | 删除指定key哈希表的一个或者多个字段,key为哈希表的键,field为哈希表里的字段名 |
HEXSTS key field | 查看指定key的哈希表内是否存在field字段 |
HGET key field | 获取指定key的哈希表内是否存在field字段 |
HGET key field | 获取指定key的哈希表内field字段存储的值 |
HGETALL key | 获取指定key 的哈希表的所有字段和值 |
HKEYS key | 获取指定 key 的哈希表中所有字段 |
HMGET key fileld1 fileld2 | 获取指定key的哈希表中所有指定字段的值 |
HVALS key | 获取指定key的哈希表中所有的值 |
List (列表)
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
列表最多可存储42949672元素,每个列表可存储40多亿。
列表(List)命令
命令 | 描述 |
---|---|
LPUSH key value1 value2.... | 同时将一个或多个值插入到列表头部,设定的key即为列表的键 |
LPUSH key value1 value2.... | 同时将一个或者多个值插入到已存在的key对应的列表头部 |
LPOP key | 移除并获取指定 key 的列表中的第一个元素 |
LINDEX key index | 通过索引获取指定key的列表中的元素,index从0开始 |
LRANGE key start stop | 通过索引获取指定key的列表中某个范围的元素 |
RPOP key | 移出并获取指定key的列表中最后一个元素 |
LREM key count value | 移出指定key的列表中,与value相等的元素 count>0 从表头开始搜索;count<0 从表尾开始搜索;count= 0 移出所有与value 相等的元素 |
LTRIM key start stop | 截取指定key的列表中的部分元素 |
Set (集合)
Redis的Set 是string类型的无序集合
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
集合(Set)命令
命令 | 描述 |
---|---|
SADD key m1 m2... | 向集合添加一个或多个成员 |
SCARD key | 获取指定key对应的集合内的成员数 |
SINTER key1 key2 | 获取所有给定集合的交集 |
SISMEMBER key member | 判断member元素是否是集合key的成员 |
SMEMBERS key | 返回集合中的所有成员 |
SPOP key | 返回并移出集合中的一个随机元素 |
SREM key member1 member2 | 返回集合中的所有成员 |