什么是redis数据库
redis即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、“Key-Value”数据库,并提供多种语言的API;redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件。
redis的五种类型
- string
- list
- set
- hash
- sorted_set
几个基本的命令:
KEYS * 获得当前数据库的所有键
EXISTS key [key ...] 判断键是否存在,返回个数,如果key有一样的也是叠加数
DEL key [key ...] 删除键,返回删除的个数
TYPE key 获取减值的数据类型(string,hash,list,set,zset)
FLUSHALL 清空所有数据库
CONFIG [get、set] redis配置
String 类型
字符串类型是Redis的最基本类型,它可以存储任何形式的字符串。其它的四种类型都是字符串类型的不同形式。
help @string命令查看string相关的命令
- 添加/修改数据
SET Key value
- 获取数据
GET Key
- 删除数据
DEL Key ... //返回删除的个数
- 添加/修改多条数据
MSET key1 value1 key2 value2 ....
- 获取多个数据
MGET key1 key2 ...
- 获取value长度
STRLEN key
- 追加数据到原有数据后 (没有则新建)
APPEND Key value
- 移动至指定数据库
MOVE Key db
- 重命名
RENAME Key rekey
- 数值增加
INCR Key //自增1
INCRBY Key increment //自增指定数值
INCRBYFLOAT Key increment //增加指定浮点数
- 数值减少
DECR Key //自减1
DECRBY Key increment //自减指定数值
- 设置key的生命周期
setex key ceconds value //添加或修改key的生命周期
expireat key timestamp //为给定key设置生存周期时间戳
expire key seconds //给指定的key设置/修改生存时间
pexpire key milliseconds //使用毫秒设置key的生存时间
persist key //取消生命周期限制
TTL key //查看key的生命周期
List 类型
概述:
列表(list)用于存储多个有序的字符串。列表是一种比较灵活的数据结构,可以充当栈和队列 的角色,在实际开发上有很多应用场景。
特点:
- 列表中的元素是有序的,可以通过索引下标来获取某个元素或者某个范围内的元素列表
- 列表中的元素是可以重复的
help @list命令查看list相关的命令
- 添加修改数据
LPUSH Key value1 [value2] … //从列表左侧头部添加
RPUSH Key value1 [value2] … //从列表右侧尾部添加
LPUSHX Key value //同LPUSH但必须保证Key存在
RPUSHX Key value //同RPUSH但必须保证Key存在
- 获取数据
LRANGE Key start stop //获取从左数第start到stop个元素,从0开始 (0 -1)代表查询所有
LINDEX Key index //查询第i个元素
LLEN Key //list的长度
- 删除
LREM Key count value //Key为集合名称,count为移除的数量,value为移除哪个值
RPOP Key //从列表右侧弹出元素
LPOP Key //从列表左侧弹出元素
LTRIM Key start stop //只保留区间内的元素,其他删除
- 插入元素
LINSERT Key before|after pivot value 向某个元素前或后插入元素
从列表中找到等于pivot的元素,在其前|后插入value
Set 类型
概述:
在Redis中,我们可以将Set类型看作为没有排序的字符集合,和List类型一样,我们也可以在 该类型的数据值上执行添加、删除或判断某一元素是否存在等操作。
特点:
- Key不能重复 无序
- 与hash存储结构完全相同,仅存储键,不存储值(nil),并且值式不允许重复的。也就是只有键没有值的hash
Set和List区别:
- SET:元素无序,元素不可重复。
- LIST:元素有序,元素可重复。
help @set 命令查看set相关的命令
- 添加/修改元素
SADD Key value[...]
- 获取数据
SMEMBERS Key
- 删除数据
SREM Key member1 [...]
- 集合中是否包含该值
SISMEMBER Key member
- 获取集合中的元素个数
SCARD Key
- 随机的移除并返回Set中的某一成员
SPOP Key //随机返回一个成员并移除
SRANDMEMBER key //和SPOP一样,随机的返回Set中的一个成员,但不会删除返回的成员。
- 交集,并集,差集
SDIFF Key [Key] //差集,返回集合中参数中第一个Key所关联的Set和其后所有Keys所关联的Sets中成员的差异
SINTER Key [Key] //交集,返回参数中所有Keys关联的Sets中成员的交集
SUNION Key [Key] //并集,该命令将返回参数中所有Keys关联的Sets中成员的并集。
- 两个集合的交、并、差集并存储到指定集合中
SINTERSTORE destination key1 [key2]
SUNIONSTORE destination key1 [key2]
SDIFFSTROE destination key1 [key2]
Hash 类型
概述:
Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。
Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。
Hash操作
(field可以理解为小key)
- 添加数据
HSET Key field value //将哈希表 key 中的字段 field 的值设为 value 。
HMEST Key field value [field1 value1 ...] //同时将多个 field-value (域-值)对设置到哈希表 key 中。
HSETNX Key field value //只有在字段 field 不存在时,设置哈希表字段的值。
- 获取数据
HGET Key field //获取存储在哈希表中指定字段的值。
HGETALL Key //获取在哈希表中指定 key 的所有字段和值
HLEN Key //获取哈希表中字段的数量
HKEYS Key //获取所有哈希表中的字段
HVALS Key //获取哈希表中所有值。
- 删除
HDEL Key [key] //删除一个或多个哈希表字段
- 查看哈希表 key 中指定的字段是否存在
HEXISTS Key field
- 增量
HINCRBY KEY field increment //为哈希表 key 中的指定字段的整数值加上增量 increment
HINCRBYFLOAT KEY field increment //为哈希表 key 中的指定字段的浮点数值加上增量 increment
- 迭代哈希表中的键值对
HSCAN Key cursor [MATCH pattern].[COUNT count] //cursor游标 pattern匹配的模式 count 指定从数据集里返回多少元素,默认值为 10 。
示例:
HMSET sites google "google.com" runoob "runoob.com" weibo "weibo.com" 4 "taobao.com"
sorted set(有序集合)
概述:
Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
操作:
- 添加
ZADD Key scoren1 value1.. scoren value //向有序集合添加一个或多个成员,或者更新已存在成员的分数
- 删除
ZREM key member [member ...] //移除有序集合中的一个或多个成员
ZREMRANGEBYLEX key min max //移除有序集合中给定的字典区间的所有成员
ZREMRANGEBYRANK key start stop //移除有序集合中给定的排名区间的所有成员
ZREMRANGEBYSCORE key min max //移除有序集合中给定的分数区间的所有成员
- 查看
ZRANGE key start stop [WITHSCORES] //通过索引区间返回有序集合指定区间内的成员
ZRANGEBYLEX key min max [LIMIT offset count] //通过字典区间返回有序集合的成员
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] //通过分数返回有序集合指定区间内的成员
ZREVRANGE key start stop [WITHSCORES] //返回有序集中指定区间内的成员,通过索引,分数从高到低
ZREVRANGEBYSCORE key start stop [WITHSCORES] //返回有序集中指定分数区间内的成员,分数从高到低排序
ZREVRANK key member //返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
ZSCORE Key member //返回有序集中,成员的分数值
ZCARD Key //获取有序集合的成员数
ZCOUNT Key min max //计算在有序集合中指定区间分数的成员数
示例后续补上