redis需知
先回顾一下mysql,mysql是存储在机器/服务器的硬盘中的,所以mysql读写都是需要从硬盘中读取,硬盘容量、带宽大小也就影响了读取速度,读取方式也会影响到整体的读取速度,当访问量、并发很大时,mysql就撑不住了,据统计,mysql的连接池并发数为500-1000,这时可以通过慢查询优化,cdn,页面静态话,Nginx负载均衡策略,或者分布式数据库来进行优化,当然也可以用redis高速缓存这种方式。
redis-高并发,内存高度cache,处理读写io的高并发容忍
redis通常被使用来将那些经常被访问的数据缓存在内存中
redis支持多种数据类型,包括k/v,list,set,zset,hash等数据结构的存储
redis支持master-slave模式应用,高可用的cache系统,支持集群服务器之间的数据同步
redis支持数据持久化存储,可用把内存中的数据保存在磁盘中,重启时再次加载即可使用
redis常用数据结构
结构类型 | 结构存储的值 | 结构读写能力 |
---|---|---|
string | 可以是字符串、整数、浮点数 | 对整个字符串或字符串的其中一部分执行操作,对整数和浮点数执行自增或自减 |
list | 一个链表,链表上的每个节点都包含一个字符串 | 添加、获取、移除单个元素;检查一个元素是否存在于集合中;计算交集、并集、差集;从集合里面随机获取元素。 |
set | 包含字符串的无需收集器,并且被包含的每个字符串都是独一无二,各不相同的 | 添加、获取、移除单个元素,检查元素是否在集合中,计算交集、合集、并集,从集合中随机获取元素 |
zset | 字符串成员(member)与浮点数分值(score)之间的有序映射,元素的排列顺序由分值的大小决定 | 添加、获取、删除单个元素;根据分值范围(range)或者成员来或许元素。 |
hash | 包含键值对的无序散列表 | 添加、获取、移除单个键值对;获取所有键值对。 |
redis简单的一般是问数据结果的区别,缓存机制,集群机制,redis缓存和数据库读取的流程差异
redis的安装
参考以下安装文章
https://www.jianshu.com/p/e90317668ae2
https://redis.readthedocs.io/en/2.4/sorted_set.html
redis启动
在本地调试redis的话,需要先启动redis服务端,然后再在redis上进行操作
1.启动redis服务
redis-server
2.连接redis
redis-cli
#redis-cli -h host -p port -a password
127.0.0.1:6379>
127.0.0.1为主机默认ip,6379为默认端口
联通redis后,我们可以进行redis的正常读写功能
string操作
set name yeyeyeyey
set age 22
get name
get age
keys *
1) "age"
2) "name"
"yeyeyeyey"
"22"
hash操作
redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)
127.0.0.1:6379> HMSET key name 'lsj' age '25' sex "male"
127.0.0.1:6379> HGETALL key
1) "name"
2) "lsj"
3) "age"
4) "25"
5) "sex"
6) "male"
127.0.0.1:6379> HGET key name
"lsj"
127.0.0.1:6379> HGET key age
"25"
127.0.0.1:6379> HGET key sex
"male"
可以通过HMSET设置对应的值,可以通过HGET key name 来获取name值,或者HGETALL key来获取所有值
list操作
LPUSH listkey age name 10 0
127.0.0.1:6379> LRANGE listkey 0 10
1) "age"
2) "name"
3) "10"
4) "0"
通过lpush到对应的key值listkey插入数据,通过lrange 0 10 取出某个范围内的数值
本文仅简单介绍基本用法,更多详细教程可参考以下
https://www.runoob.com/redis/redis-lists.html
集合操作
127.0.0.1:6379> sadd testset redis
(integer) 1
127.0.0.1:6379> sadd testset mongodb
(integer) 1
127.0.0.1:6379> sadd testset sql
(integer) 1
127.0.0.1:6379> smembers testset
1) "sql"
2) "mongodb"
3) "redis"
sadd 进行集合新增操作,smembers查看集合中所有元素
有序集合操作
127.0.0.1:6379> zadd azset 1 redis
(integer) 1
127.0.0.1:6379> zadd azset 3 redisee
(integer) 1
127.0.0.1:6379> zadd azset 2 mysql
(integer) 1
127.0.0.1:6379> zadd azset 6 mongdb
(integer) 1
127.0.0.1:6379> ZRANGE azset 0 10
1) "redis"
2) "mysql"
3) "redisee"
4) "mongdb"
有序集合通过zadd添加数据,zrange展示范围内数据集
redis自带的性能测试命令
#以下实例同时执行 10000 个请求来检测性能
redis-benchmark -n 10000 -q
更多详情教程详见以下链接
https://www.runoob.com/redis/redis-tutorial.html