1.redis相关简介
安装
- 安装好gcc
- 下载好对应的安装包
- 解压到相应的目录
- 使用make进行编译
- 进入/src中使用make install安装
- 进入redis.conf文件中修改相应的配置(密码,远程连接等等)
- 默认16个数据库,类似数组下标从0开始,初始默认使用0号数据库。
- Redis 单线程+多路IO复用。
2.常用的五大数据类型
2.0 key的操作
- keys * 查看所有的键
- exists key 返回1表示存在该键,返回0表示不存在该键
- set key value 设置新的键
- expire key 时间 表示key时间(s)过期
- ttl key 查看key还有多少时间过期 -1表示不过期,-2表示已过期,其他表示还剩多少时间过期
- select number 切换数据库[0,15]
- dbsize 查看当期数据库中的key的数量
- flushdb 清空当前库
- flushall 清空全部库
2.1 字符串(String)
二进制安全的,最基本的数据类型,value最大512M,原子性
- get key 获取值
- append key value 向key的之后面追加value
- strlen key 获取该key对应value的长度
- setnx key value 只有key不存在的时候才能设置成功
- mset k1 v1 k2 v2…设置多个key value
- mget k1 k2 … 获取多个值
- msetnx k1 v1 k2 v2 …
- incr key 相当于++操作 数值类型才可以
- decr key 相当于–操作 数值类型才可以
- incrby / decrby key step += / -= 相应的步长
- getrange key n1 n2 截取字符串
- setrange key n1 value 在指定位置设置值
- setex k1 time v1 设置key时一起设置过期时间
- getset key value 使用value对旧值进行覆盖
String的底层数据结构,简单的动态字符串,类似于java中的ArrayList<>
2.2 List
单键多值 可以在头部或者尾部进行插入操作,底层就是一个双向链表,头尾操作效率很高。
- lpush / rplush k 从左边或右边插入值
- lrange n1 n2 取出列表中的值0 -1 表示取出全部
- lpop / rpop 从左边或右边弹出一个值 (将list中的值取光后,key就不存在了)
- rpoplpush k1 k2 k1右边中弹出一个值加入k2的左边
- lindex key index 取对应下标的值
- llen key 获取list的长度
- linsert key before value newvalue 在value的前面插入新的值
- lrem key num value 从左边删除num个value
- lset key index value 将下标为index的值替换为value
list 的数据结构是一个快速链表quickList
2.3 Sst
类似于List,只不过set可以去重
- sadd key v1 v2 …添加
- smembers key 取出该集合的所有值
- sismenber key v 检查key中是否存在v
- scard key 返回元素个数
- srem key v1 v2删除key中的元素
- spop key 随机从key中取出一个值
- srandmember key num从中取出num个数,不会删除掉
- smove k1 k2 v 将v从k1—>k2
- sinter k1 k2 取两个set的交集
- sunion k1 k2 并集
- sdiff k1 k2 差集(k1中有的,k2中没有的)
Set的底层数据结构是dict字典,字典是使用哈希表实现的。
2.4 Hash
类似于java中Map<String,Object>,适合存储对象。
- hset key f v 给key对象中添加f–>v映射
- hget key f 从对象中取出f属性的值
- hmset key f v f v…批量加入
- hexists key f 判断key中是否存在f属性
- hkeys key 查看所有key
- hvals key 查看所有属性
- hincreby key f num 给key对象的f属性的值加上num
- hsetnx key f v f v f属性不存在才添加
底层数据结构:ziplist + hashtable
2.5 Zset
Zset与普通集合非常相似,是一个没有重复元素的有序集合
- zadd key score1 v score2 v 加入元素,照score升序排序
- zrange key n1 n2 [WITHSCORES]取出n1到n2的值
- zrangebyscore key min max [W…]取出score从min到max的值
- zrevrangebyscore key max min [W…]取出score从max到min的值,按照降序排
- zincreby key num f 给f属性增加num
- zrem key f 删除属性f
- zcount key min max 统计从min到max有多少个值
- zrank key f 查看f的排名
数据结构:hash+跳跃表
3.redis中的新数据类型
3.1 BitMaps
- setbit key offset(偏移量) value
- getbit ket offset
- bitcount key 统计1的数量
- bitop and/or/not(非)/xor(异或) destkey [keys…]将结果保存在desteky中
3.2 HyperLogLog
主要用于基数的操作
- pfadd key [element…]将element加入到hyperloglog中去。
- pfcount key 统计出基数的数量
- pfmergee destkey [key…] 将多个key合并
3.3 Geospatial
- geoadd key [经度 纬度 地点…] 添加经纬度
- geopos key 地点… 取出具体坐标位置
- geo dist key l1 l2 [m|km|] 取两点之间的直线距离
- georadius key 经度 纬度 半径 [m|km]