redis
Redis简介
Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。
Redis的每一个操作都是原子性的.
Redis 与其他 key - value 缓存产品有以下三个特点:
- Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
- Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
- Redis支持数据的备份,即master-slave模式的数据备份。
对比
redis VS mysql
redis:内存数据库,读写速度快,非关系型数据库NoSQL,(操作数据方便,数据固定)
mysql:硬盘数据库(数据持久化),关系型(操作数据间关系,可以不同组合)
当大量访问临时数据时,redis数据库更有优势.
redis VS memcache
redis
- 操作字符串string,列表list,哈希hash(字典),集合set,有序集合sorted set
- 支持数据持久化,默认持久化,可设置save配置,可以将数据同步给mysql
- 支持高并发
memcache
- 操作字符串
- 不支持数据持久化
- 并发量小
Redis配置
- redis.windows.conf文件中可手动设置
- 可使用
config set
命令来修改命令 - 配置中的dump,rdb是设置存放后台同步数据的文件夹
Redis操作
启动服务
1.前台启动服务
>:redis-server
2.后台启动服务
>:redis-server --service-start
3.配置文件启动服务
>:redis-server 配置文件的绝对路径
>:redis-server --service-start 配置文件的绝对路径
eg: redis-server --service-start D:/redis/redis.conf
密码管理
1.提倡在配置文件中配置,采用配置我呢见启动
requirepass 密码
2.在启动服务后设置密码
config set requirepass 密码
3.连接后密码登录
auth 密码
4.启动服务前使用密码登录
redis-cli -h localhost -p 6379 -n 库编号 -a 密码
5.连接数据库后查看当前密码
config get requirepass
不使用密码也可以进入,但是无法操作,使用密码登录后才可以操作
连接数据库
1.默认连接:
>:redis-cli
2.完整连接:-h默认127.0.0.1,-p默认6379,-n默认0,
>:redis-cli -h localhost -p 6379 -n 库编号 -a 密码
3.先连接,后输入密码
>:redis-cli -h localhost -p 6379 -n 库编号
>:auth 密码
数据库创建后默认创建0到15号共16个库
关闭服务
1.在没有连接进入数据库的时候执行
>:redis-cli shutdown
2.连接进数据库后执行
>:shutdown
切换数据库
连接进入数据库后执行
>:select 数据路编号
数据持久化
1.配置文件中的默认配置
save 900 1 #after 900 sec (15 min) if at least 1 key changed
save 300 10 #after 300 sec (5 min) if at least 10 keys changed
save 60 10000 #after 60 sec if at least 10000 keys changed
2.安全机制
当redis服务不可控宕机,会默认调用一下save方法完成数据持久化
3.主动持久化,连入数据库后执行,主动调用save方法完成数据持久化
>:save
注意:数据持久化默认保存文件到dump.rdb,保存路径未启动redis服务的当前路径
eg:C:\Users\AGSOL>redis-cli 文件就会被保存到C:\Users\AGSOL
Redis数据类型
字符串string
1.set key value 设置指定key的value
>:set name agsol
2.get key 根据key获取value
>:get name
3.getrange key start end 获取对应索引区间的子串,闭区间
>:getrange name 0 0
4.setex key seconds value 将value关联给key,seconds为过期时间
>:setex gender 10 male //十秒后失效
5.setrange key offset value offset为索引值,从offset位开始将key中对应子串替换成value
>:setrange name 1 agsol
6.strlen key 返回key的长度,返回类型位int整型
>:strlen name
7.mset key value[key value ...] 同时设置多个键值对
8.incrby key increment 给key所对应的value加给定的值,前提value必须是全数字构成的字符串,increment正表示加,负表示减
9.append key value1 当key存在时,给对应value位部追加value1
列表list
1.blpop key1[key2...]timeout 移除并获取列表的第一个元素,如果没有元素会阻塞列表直到等待超时或者发现可弹出元素为止
2.brpop key1[key2] time 移除并获取列表的最后一个元素,如果没有元素会阻塞列表直到等待超时或者发现可弹出元素为止
3.brpoplpush source destination timeout 从source中弹出一个值,将此元素插入到另一个并返回,如果没有元素会阻塞列表直到等待超时或者发现可弹出元素为止
4.lindex key index 通过索引获取列表中的元素
5.linsert key before|after pivot value 在列表的元素前或者后插入元素
6.llen key 获取看列表长度
7.lpop key 移除并获取列表的第一个元素
8.lpush key value1[value2]将一个或多个值插入头部
9.lrange key start stop 获取列表指定范围内的元素
10.lset key index value 通过索引设置列表元素的值
11.ltrim key start stop 对列表进行裁剪trim,只保留指定区间内的元素
哈希hash(字典)
1.hdel key field1[field2] 删除一个或多个表字段
2.hexisits key field 查看key中是否存在field
3.hget key field 获取存储在字典中的值
4.hgetall key 获取哈希表中key对应的所有字段及值
5.hincrby key field increment 为纯数字构成的值做增量为increment
6.hkeys key 获取表中所有字段
7.hlen key 获取表中字段的数量
8.hmset key field1 [field2 value2]... 将多个field-value添加到key中
9.hsetnx key field value 当field不存在时,设置value
10.hvals key 获取key表中所有值
集合set
1.sadd key member1 [member2] 向集合中添加一个或多个成员
2.scard key 获取集合的成员数
3.sdiff key1 key2 返回给定集合的差集
4.sdiffstore destination key1 key2 返回给定集合的差集并存储到destination中
5.sinter key1 key2 ... 返回给定所有集合的交集
6.sinterstore destination key1 key2 返回给定所有集合的交集存储到destination中
7.sismember key member 判断member元素是否是集合key的成员
8.smembers key 返回集合中所有成员
9.smove source destination member 将member元素从source集合移动到destination集合
10.srem key member1,member2... 移除集合中一个或多个成员
11.sunion key1.key2 返回所有给定集合的并集
有序集合sorted set
1.zadd key score1 member1[score2 member2] 向有序集合添加一个或多个成员,或者更新已存在的成员的分数
2.zcard key 获取有序集合的成员数
3.zcard key min max 计算在有序集合中指定区间分数的成员数
4.zinterstore destination numkeys key [key]... 计算给定的一个或多个有序集的交集并将结果存储在新的有序集合key中
5.zlexcount key min max 在有序集合中计算指定字典区间内的成员数量
6.zrange key start stop 通过索引区间返回有序集合指定区间内的成员
7.zrangebylex key min max 通过字段区间返回有序集合的成员
8.zrangebyscore key min max 通过分数返回有序集合指定区间内的成员
9.zrank key member 返回有序集合中指定成员的索引
10.zrem key member [member] 移除有序集合中的一个或多个成员
11.zremrangebylex key min max 移除有序集合中给定字典区间的成员