Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API
Redis 的作用:
- 内存存储、持久化(RDB 和 AOF)
- 效率高,可以用于高速缓存
- 发布订阅系统,队列
- 地图信息分析
- 计数器、计时器(比如浏览量)
Redis 的优点:
- 高拓展(非关系型数据库拓展性抢)
- 高可用(可以搭建集群,治理方便)
- 高性能(基于内存读写,效率高,非关系型数据库,读写与存储效率高)
Redis单线程下高效的原因
- Redis是基于内存进行读写的,多线程和单线程不影响Redis的读写效率
- CPU实现多线程时切换上下文时会损耗很大,而Redis是一块CPU操作一块内存,不需要切换上下文,没有损耗。
Redis在windows下的安装
- 因为官方推荐使用Linux下的环境,这里只对windows环境进行简单的说明,可以用作测试使用,操作和Linux大致相同。
-
选择合适的版本进行安装。
-
解压并启动
-
使用ping命令测试是否连接成功
Redis在Linux下的安装
-
选择合适的版本进行安装,注意不要下载太旧的版本或者测试版。
注:也可以使用 wget 命令的方式下载(此步骤可以省略上传步骤)wget http://download.redis.io/releases/redis-5.0.7.tar.gz
-
上传至linux服务器
选择一个工具将安装包进行上传。
-
使用命令进行解压
[root@localhost redis]# tar -zxvf redis-5.0.7.tar.gz
-
c语言环境安装(已有C环境不需要安装,redis的编译需要依赖此环境)
[root@localhost redis]# yum install gcc-c++
-
编译redis,进入redis解压后的目录进行编译
[root@localhost redis-5.0.7]# make
-
安装redis
[root@localhost redis-5.0.7]# make install
安装完成后,redis的启动文件将在
/usr/local/bin
-
拷贝
redis目录
下的配置文件redis.conf
[root@localhost bin]# mkdir myconf [root@localhost bin]# cp /windows-datas/redis/redis-5.0.7/redis.conf myconf
-
修改配置文件,这里只将启动方式更改为后台启动。
# NotAL ##################################### # By default Redis does not run as a daemon. Use 'yes' if you need it. # Note that Redis will write a pid file in /var/run/redis.pid when daemonized. daemonize no #更改为yes,即为后台启动
-
启动redis服务
[root@localhost bin]# redis-server myconf/redis.conf #启动需指定配置文件
-
启动redis客户端连接到redis服务
[root@localhost bin]# redis-cli -p 6379 #连接指定端口的redis服务
-
测试连接
127.0.0.1:6379> ping PONG
-
关闭连接
127.0.0.1:6379> shutdown #关闭redis服务 not connected> exit #关闭连接
Redis拓展
压力测试工具 redis-benchmark
- 安装redis后测试工具也同时被安装
测试工具指令参数
序号 | 选项 | 描述 | 默认值 |
---|---|---|---|
1 | -h | 指定服务器主机名 | 127.0.0.1 |
2 | -p | 指定服务器端口 | 6379 |
3 | -s | 指定服务器 socket | |
4 | -c | 指定并发连接数 | 50 |
5 | -n | 指定请求数 | 10000 |
6 | -d | 以字节的形式指定 SET/GET 值的数据大小 | 2 |
7 | -k | 1=keep alive 0=reconnect | 1 |
8 | -r | SET/GET/INCR 使用随机 key, SADD 使用随机值 | |
9 | -P | 通过管道传输 请求 | 1 |
10 | -q | 强制退出 redis。仅显示 query/sec 值 | |
11 | –csv | 以 CSV 格式输出 | |
12 | *-l*(L 的小写字母) | 生成循环,永久执行测试 | |
13 | -t | 仅运行以逗号分隔的测试命令列表。 | |
14 | *-I*(i 的大写字母) | Idle 模式。仅打开 N 个 idle 连接并等待。 |
简单测试实例
# 测试20个并发下的10000次请求
[root@localhost bin]# redis-benchmark -h localhost -p 6379 -c 20 -n 10000
====== PING_INLINE ======
10000 requests completed in 0.18 seconds
20 parallel clients
3 bytes payload
keep alive: 1
99.34% <= 1 milliseconds
99.97% <= 2 milliseconds
100.00% <= 2 milliseconds
54945.05 requests per second
====== SET ====== #set的性能
10000 requests completed in 0.14 seconds
20 parallel clients
3 bytes payload
keep alive: 1
99.89% <= 1 milliseconds
100.00% <= 1 milliseconds
68965.52 requests per secon
......
数据库基础知识
Redis默认有16个数据库,类似数组下标从零开始,初始默认使用零号库
# 查看设置数据库的数量
[root@localhost bin]# cat myconf/redis.conf | grep database
# Set the number of databases. The default database is DB 0, you can select
# dbid is a number between 0 and 'databases'-1
databases 16
# 切换数据库
127.0.0.1:6379> select 10
OK
127.0.0.1:6379[10]>
# 查看当前库key键数量
127.0.0.1:6379[10]> dbsize
(integer) 0
# 清空当前数据库的所有key
127.0.0.1:6379[10]> flushdb
OK
# 清空所有数据库的所有key
127.0.0.1:6379[10]> flushall
OK