1、redis介绍
1.1什么是redis
Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如
字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets)
与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了
复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU
eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过
Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。
redis的官网地址:redis.io
国人汉化的redis网站地址:http://redis.cn/
1.2 性能
下面是官方的bench-mark数据:
测试完成了50个并发执行100000个请求。
设置和获取的值是一个256字节字符串。
结果:读的速度是110000次/s,写的速度是81000次/s 。
1.3 支持语言
1.4 支持的数据类型
redis提供五种数据类型:
1.字符串(strings)
2.字符串列表(lists)
3.字符串集合(sets)
4.有序字符串集合(sorted sets)
5.哈希(hashes)
2、redis安装
2.1 安装
从redis.io下载最新版redis-X.Y.Z.tar.gz后解压,然后进入redis-X.Y.Z文件夹后直接make即可,安装非常简单。
make成功后会在src文件夹下产生一些二进制可执行文件,包括redis-server、redis-cli等等:
复制代码代码如下:
$ find . -type f -executable
./redis-benchmark //用于进行redis性能测试的工具
./redis-check-dump //用于修复出问题的dump.rdb文件
./redis-cli //redis的客户端
./redis-server //redis的服务端
./redis-check-aof //用于修复出问题的AOF文件
./redis-sentinel //用于集群管理
2.2 启动
启动redis非常简单,直接./redis-server就可以启动服务端了
复制代码代码如下:
./redis-server ../redis.conf
默认情况下,redis-server会以非daemon的方式来运行,且默认服务端口为6379。
redis的配置文件为:redis.conf,可以修改指定要加载的配置文件:
cp redis.conf /usr/local/redis/bin/
cd /usr/local/redis/bin/
# 设置可后台运行
vim redis.conf
daemonize yes
./redis-server ../redis.conf
# 启动客户端
./redis-cli
ping
# 让所有ip都可连接
vim redis.conf
#bind 127.0.0.1
protected -mode no
:wq
ps -ef |grep redis
kill -9 12587
./redis-server ../redis.conf
# 设置连接验证码
vim redis.conf
requirpaas root
./redis-server ../redis.conf
# 修改数据库个数
vim redis.conf
database 20
3、redis操作数据
3.1 redis-cli 操作字符类型
./redis-cli -p 6379 -a root
127.0.0.1:6379>ping
# 存在1数据库
127.0.0.1:6379>select 1
OK
127.0.0.1:6379>select 0
OK
127.0.0.1:6379>set name zhangsan
OK
127.0.0.1:6379>get name
"zhangsan"
127.0.0.1:6379>mset sex 1 address sh
OK
127.0.0.1:6379>mget name sex address
1) "zhangsan"
2) "1"
3) "sh"
3.2 redis-cli 操作哈希类型
# user -redis的key
127.0.0.1:6379>hset user name zhangsan
[integer]1
127.0.0.1:6379>hget user name
"zhangsan"
127.0.0.1:6379>hmset user age 18 sex 1
[integer]OK
127.0.0.1:6379>hmget user name age sex
1) "zhangsan"
2) "18"
3) "1"
# 获取user下所有值
127.0.0.1:6379>hgetall user
# 删除
127.0.0.1:6379>hdel user name age
3.3 操作list类型,lpush=左添加
127.0.0.1:6379>lpush students zhangsan lisi
[integer]2
127.0.0.1:6379>lrange students 0 2
1)"lisi"
2)"zhangsan"
127.0.0.1:6379>rpush students wangwu zhangliu
[integer]4
127.0.0.1:6379>lrange students 0 3
1)"lisi"
2)"zhangsan"
3)"wangwu"
4)"zhaoliu"
127.0.0.1:6379>llen students
[integer]4
127.0.0.1:6379>lrem students l lisi
[integer]2
127.0.0.1:6379>lrange students 0 3
1)"zhangsan"
2)"wangwu"
3)"zhaoliu"
# 右边删除2个lisi
127.0.0.1:6379>rrem students 2 lisi
[integer]2