Redis入门
Redis
Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,
- redis支持数据的持久化,可以将内存中的数据存储到磁盘中。
- 不仅仅支持key-value类型的数据,还支持list,set,zset,hash等数据结构
- 支持数据的备份
redis的特点
- 极高的性能,读取速度可达110000次/s;写的速度高达81000次/s
- 支持多种数据类型
- 所有操作都是原子性的(包括多步操作)
- Redis 支持持久化 内存数据库 持久化到硬盘中
- Redis单进程,单线程 效率高 Redis实现分布式锁
redis的数据类型和相关命令
- string 字符串
一个键最大可以存512mb
//存入
set mykey "hello word"
//取出
get mykey
//返回key中的字符串的子字符串
getrange key start end
// 将key的值设为value并返回旧值
getset key value
//对key所存储的字符串,获取指定偏移量上的位
getbit key offset
//获取所有给定key的值
mget key1 [key2...]
//对所有key存储的字符串,设置或清除指定偏移量上的位
setbit key offset value
//将值value关联到key,并将key的过期时间设为seconds
setex key seconds value
//只有在key不存在时设置key的值
setnx key value
//返回key所存储的字符串的长度
srtlen key
//将key中存储的值加一
incr key
//将key所存储的值加上给定的增量值
incrbyfloat key increment
//在key后面追加字符串
append key value
- hash 哈希
适合存储对象
// 存入
hmset myhash mykey01 "hello"
//取出
hget myhash mykey01
// 获取存储在哈希表中指定key的所有字段和值
hgetall key
//为哈希表key中的指定字段的整数值加上增量increment
hincrby key field incremtn
//获取所有哈希表中的字段
hkeys key
//获取哈希表中字段的数量
hlen key
// 将哈希表key中的字段field的值设为value
heset key field value
//只有在字符按field不存在时,设置哈希表字段的值
hsetnx key field value
// 获取哈希表中所有的值
hvals ksy
-
list 列表
列表是字符串列表,按照存入顺序排序//从头部插入 lpush mylist hello //从尾部追加 rpush mylist word //列出 lange mylist 0 10 //移除并获取第一个元素 ,如果没有元素会阻塞列表直到等待超时会发现可弹出的元素为止 blpop key1 [key] timeout //移除并获取列表的最后一个元素。如果没有元素则会阻塞列表,直到等待时间超时,或发现可弹出的元素为止。 brpop key1 [key2] timeout //从列表中弹出一值,并将弹出的元素插入到另一个列表中并返回它;如果没有元素则会阻塞直到超时,或发现可以弹出的元素 brpoplpush source destination timeout //通过元素的索引获取列表中的元素 lindex key index //获取列表的长度 llen key //移除列表的第一个原元素 lpop key //将一个值插入到已存在的列表的头部 lpushx key value //获取列表指定范围内的元素 lrange key start stop //移除列表元素 lrem key count //通过索引设置列表元素的值 lset key index value //让列表只保留指定区间的元素 Ltrim key start stop //移除列表的最后一个元素 rpop key //移除列表的最后一个元素,并将该元素添加到另一个列表并防护 rpoplpush source destination //为列表章添加多个值 rpush key value1 [value2] //为已存在的列表添加值 rpushhx key value
-
set 集合
是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)//加入 sadd myset aaa sadd myset bbb //列出 smembers myset //获取结合的成员数 scard key //返回指定结合的差集 sdiff key1 [key2] //返回给定集合的差集并存储