redis学习
一,redis是个啥
REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。
Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。
Redis 通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型。
二, redis 环境安装配置(Linux环境)
- 官网下载redis的Linux对应版本,然后导入到opt目录下
- 执行 tar -zxvf redis… 解压
- 安装gcc-c++环境, ubuntu不支持yum安装。使用:apt-get install gcc 和 apt-get install c++ 进行安装
- 安装完成后执行: make
- 然后执行: make install. 至此安装完成
- redis 的默认路径在: /usr/local/bin 目录下
- 将redis的配置文件 redis.config 移动到 redis 的默认路径下
- 修改配置文件: daemonize yes
- 环境配置完成
三, redis 的启动和关闭
- 启动:进入redis的目录,输入: redis-server redisconfig/redis.conf(比如:我的配置文件为redisconfig/redis.conf)
- 测试连接: 接着输入: redis-cli -p 6379 (6379为默认端口号)
- 输入: ping。 如果输出:PONG则OK
- 关闭redis:shutdown
- 退出: exit
四, redis基础知识
Redis默认有16个数据库,默认使用第0个
- select 2 ——> 更换数据库
- dbsize ——-> 查看数据库大小
- keys * ———> 查看数据库所有的key
- flushdb ————> 清空当前数据库
- flushall ———> 清空所有库
keys *
查看当前库所有的key
exists name
判断name
key 是否存在move name 1` 移除 `name
expire name 10
设置name
10秒钟之后过期
ttl name
查看过期时间
type name
查看当前key
的类型
五,性能测试
使用redis-benchmark测试,其是一个官方自带的压力测试工具
redis-benchmark -h localhost -p 6379 -c 100 -n 100000
# -h 本机
# -p 端口号6379
# -c 并发数100
# -n 每个100000个请求
redis是单线程的
Redis是很快的,官方表示,Redis是基于内存操作,CPU不是Redis性能瓶颈,Redis的瓶颈是根据机器的内存和网络带宽,既然可以使用单线程来实现,就使用单线程了!|
Redis为什么单线程还这么快?
1、误区1∶高性能的服务器一定是多线程的?
2、误区2∶多线程(CPU上下文会切换!)一定比单线程效率高!先去CPU>内存>硬盘的速度要有所了解!核心: redis是将所有的数据全部放在内存中的,所以说使用单线程去操作效率就是最高的,多线程(CPU上下文会切换:耗时的操作!! !),对于内存系统来说,如果没有上下文切换效率就是最高的!多次读写都是在一个CPU上的,在内存情况下,这个就是最佳的方案!
六,五种基本类型
1, string
set key value