Redis介绍
Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库,官方提供测试数据,50个并发执行100000个请求,读的速度是110000次/s,写的速度是81000次/s ,且Redis通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止Redis支持的键值数据类型如下:
1) 字符串类型 string
2) 哈希类型 hash
3) 列表类型 list
4) 集合类型 set
5) 有序集合类型 sortedset
1.3.1 redis的应用场景
• 缓存(数据查询、短连接、新闻内容、商品内容等等)
• 聊天室的在线好友列表
• 任务队列。(秒杀、抢购、12306等等)
• 应用排行榜
• 网站访问统计
• 数据过期处理(可以精确到毫秒
• 分布式集群架构中的session分离
下载安装
1. 官网:https://redis.io
2. 中文网:http://www.redis.net.cn/
3. 解压直接可以使用:
* redis.windows.conf:配置文件
* redis-cli.exe:redis的客户端
* redis-server.exe:redis服务器端
数据类型:
所有的数据都是key-value形式,所谓的数据类型指的是value的类型,key的类型全部都是字符串。
*
命令操作*
-
操作String
新增:set username jack 查看:get username 删除:del username 修改:set username lucy 其他: incr age 把age的值递增1 incryby age 10 递增10 decr age 递减1 decrby age 10 递减10 append key value 不存在就新建,存在就追加
-
操作hash
新增: hset user1 name jack hmset user2 name lucy age 18 查看: hget user1 name 删除: hdel user1 name 修改: hset user1 username lucy --修改username的值为lucy 其他: hmget user1 name age 获取user1中的name和age的值 hgetall user1 获取user1中的所有key以及vlaue的值 hincrby user1 age 10 为user1里面的age属性的值递增10(递减-10) hexists user2 addr 判断user2中是否包含adr属性 hlen user1 获取user1包含多少个属性 hkeys user1 获取user1中的所有属性 hvals user1 获取user1中的所有属性的值
-
操作List
新增: lpush names jack lucy mary -- names不存在就新建,存在就新增值,左边新增 rpush names jack --从右边新增 查看: lrange names 0 -1 --查所有,不想查所有修改-1 删除: lrem names 2 jack 从左开始,删除2个jack(右往左就写负数) 修改: lset names 2 jackson --把下标为2的值换成jackson 其他: lpushx names jack 如果存在names就加入到左边,否则不作处理 rpushx names jack xxxxx lpop names 从左边开始弹出数据 rpop names 从右边开始弹出数据 llen names 查看names中有多少个数据 linsert names before a aaa 在names中的a的前面插入aaa(如果有重复的,以左边第一个为准) linsert names after b bbb 在names中的b的后面插入bbb(如果有重复的,以左边第一个为准) rpoplpush names names2 把names中的最右边的数据弹到names2的最左边去
-
操作set
增加: sadd addrs Nanjing Beijing dongjing 查看: smembers addrs 删除: srem addrs nanjing --删除addrs中的nanjing 修改: 移动: smove addrs new_addrs Nanjing --把addrs中的nanjing移动到new_addrs 其他: sismembers fr1 a 判断fr1中是否存在a sdiff fr1 fr2 获取fr1的个人独有的数据(个人好友) sinter fr1 fr2 fr3 求交集(共同好友) sunion fr1 fr2 求并集 srandmember fr1 随机从fr1中读取一个值 sdiffstore fr4 fr1 fr2 把fr1-fr2的结果存储到fr4中 sinterstore fr5 fr1 fr2 把fr1和fr2的交集存储到fr5中 sunionstore fr6 fr1 fr2 把fr1和fr2的并集存储到fr6中
-
操作SortedSet
增加:
zadd score 90 jack 80 mary 100 rose --指定jack分数90,mary分数80,rose100查看:
zrange score 0 -1 withscores
删除:
zrem score kangkang mary
修改:
zincrby score 3 kangkang 增加分数
其他:
zcard games 获取gamgs中的成员数量
zrem games1 a b 删除games1中的a,b元素
zrange games 0 3 withscores 查询games中0到3的所有成员以及其对应的分数
zrange games 0 -1 withscores 查询games中所有成员以及其对应的分数(从小到大)
zrevrange games 0 -1 withscores 查询games中所有成员以及其对应的分数(从大到小)
zremrangebyrank games1 0 1 删除下标从0到1之间的数据
zremrangebyscore games1 45 55 删除games1中分数在45到55之间的元素
zrangebyscore games 55 85 withscores limit 0 3 (分页)
查询分数在55到85之间,按照从小到大排序,取出从第0个开始的一共3个结果zincrby games1 20 dd 给games1中的dd增加20分(减分改成-20) zcount games1 20 80 获取games1中20分到80分之间的成员的总的数量 zrank games1 bb 获取bb在games1中的排名(从小到大) zrevrank games1 bb 获取bb在games1中的排名(从大到小)
通用命令
:
keys * 查看当前库有哪些键
select 1 选择1号库
type key 获取key的具体类型
exists keys 判断指定key是否存在于数据库中
rename k k1 把k重命名成k1
expire key 1000 设置key的过期时间(单位是秒)
move key 6 把当前库中的key移动到6号库中
dbsize 返回当前数据库中key的数目
info 获取服务器的信息和统计
flushdb 清除当前数据库中的数据
flushall 删除所有数据库中的所有的key
持久化
rdb:
快照备份(默认使用的备份方案)
save 900 1
save 300 10
save 60 10000
指定配置文件启动
redis-server.exe redis.windows.conf
**aof:**
日志记录
打开aof备份
appendonly yes
设置备份策略
appendfsync always
appendfsync everysec
appendfsync no