redis简介
redis全称为Remote Dictionary Server 远程字典服务器。
我们可以将它理解为一种可以用键值对的形式来存储数据的数据库。
而redis有许多的特性,比如说它开源,使用C语言编写,支持网络交互而且它在基于内存来操作数据的同时还是可以进行持久化的数据库。
而且除了我们上面说的以键值对来存储数据,它还有其他的四种基础数据类型 list(列表),hash(字典),set(集合),zset(有序集合)。还有其他四种扩展类型,这个我们在后边的文章中再聊。今天我们主要让初识者了解一下redis。
redis五种基本数据类型
在介绍它们之前,我先将其与Java相关内容作以类比,帮助大家快速认识。
- String 类似 Map<String,String>
- List 类似 Map<String,List>
- Map 类似 Map<String,Map>
- Set 类似 Map<String,HashSet<String>>
- ZSet 类似 Map<String,String<Double,String>>
1、String(字符串)
string类型是Redis最基本的数据类型,一个键最大能存储512MB。string类型是二进制安全的。意思是 redi s的string可以包含任何数据。
相关命令:
1)strlen 查看字符串的长度
2)append 增加后缀,返回字符串的长度
3) incr 自增 , decr 自减。 增加 incrby key value。 decrby 减少,同上。(当value为整数时可用)
4) getrange key start end 获取从初始位置到结束位置的值。setrange key start newStr 设置从起始位置开始,替换指定位置为新的字符串。
5) 整合命令 setex = set + expire 使用方式: setex + key + 时间 + value setnx = set + exists = set if not exists 使用方式: setnx + key + value 如果key不存在,则设置数据,返回1。如果存在,不设置,返回0。 getset 先取出原来的值,再设置为新值 使用方式: getset + key + value 返回旧值。
6) 批量操作 mget = more get 使用方式 : mget + key1 + key2 + key3 参数接收多个key, 结果返回多个value mset = more set 使用方式:mset + key1 + value1 + key2 + value2 一次设置多个key和value, 参数本身是个map msetnx 使用方式同上。
2、List(列表)
相关命令:
1)存取操作
push pop range lpush : 从左侧存入数据 相当于栈结构
弹出时执行 lpop (从左侧弹出)
rpush: 从右侧存入数据 相当于队列结构 弹出时执行lpop (从左侧弹出)
lrange: 范围内查看数据 使用方式:lrange key start end
2)对list操作
llen 查看长度 lindex 获取某一个位置的值,下角标从0开始 lrem 删除n个value的值 使用方式: lrem key N value ltrim
截取某个范围的数据重新赋值给key 使用方式: ltrim key start end (下角标从0开始)
linsert 插入数据到某个位置的前后 使用方式: linsert key before/after oldValue newValue 如果要插入数据到头部,还可以使用 lpushx, 使用方式:lpushx key value 同理,如果要插入数据到尾部,可以使用 rpushx, 使用方式同上。
lset 可以更改指定位置的值 使用方式: lset key index value
3、Hash(字典)
相关命令:
4、Set(集合)
相关命令:
1)读写操作: sadd 创建set类型的value
smembers key 查询set中的所有值
sismember key value 判断value是否在key所对应的set中, 如果在返回1,如果不在返回0
2)更新操作: srem key value1 value2 删除set中一至多个数据的值 srandmember key num 可以在set中随机出num个元素 spop key num 可以随机弹出num个元素返回
3) 交互操作: smove key1 key2 value 移动元素value从key1到key2
顺带说一下取交、并、差集 命令分别为 sinter / sunion/sdiff