共计 7161 个字符,预计需要花费 18 分钟才能阅读完成。
这篇文章主要介绍了 Redis 如何安装使用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让丸趣 TV 小编带着大家一起了解一下。
一、Redis 基础部分:
1、redis 介绍与安装比 mysql 快 10 倍以上
*****************redis 适用场合 ****************
1. 取最新 N 个数据的操作
2. 排行榜应用, 取 TOP N 操作
3. 需要精确设定过期时间的应用
4. 计数器应用
5.Uniq 操作, 获取某段时间所有数据排重值
6. 实时系统, 反垃圾系统 7.Pub/Sub 构建实时消息系统
7.Pub/Sub 构建实时消息系统 8. 构建队列系统
9. 缓存
=============================================
SET 操作每秒钟 110000 次,GET 操作每秒钟 81000 次, 服务器配置如下:
Linux 2.6, Xeon X3320 2.5Ghz.
stackoverflow 网站使用 Redis 做为缓存服务器。
同时也会将数据写到硬盘上。所以数据是安全的(除突然断电外, 重启服务会写到 dump.rdb 文件中)
1. 安装:
tar zxvf redis-2.6.9.tar.gz
cd redis-2.6.9
make
cd src make install
2. 移动配置文件位置(为了便于管理)
cd /usr/local/
mkdir -p /usr/local/redis/bin
mkdir -p /usr/local/redis/etc
mv /lamp/redis-2.6.9/redis.conf /usr/local/redis/etc
cd /lamp/redis-2.6.9/src
mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server /usr/local/redis/bin
3. 修改配置文件
vi /usr/local/redis/etc/redis.conf
一、将 daemonize no 中 no 改为 yes[yes 指后台运行]
4. 启动 / 随机启动:
cd /usr/local/redis/bin
./redis-server /usr/local/redis/etc/redis.conf# 启动 redis 并指定配置文件。
#vi /etc/rc.local # 设置随机启动。
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
5. 查看是否启动成功
ps -ef | grep redis
netstat -tunpl | grep 6379# 查看端口是否占用。
6. 进入客户端 / 退出
cd /usr/local/redis/bin
./redis-cli# 进入
quit# 退出
7. 关闭 redis
pkill redis-server# 关闭
./redis-cli shutdown# 关闭
************************************Redis 安全 ************************************
Redis 的安全性???(由以下 4 种方式)
1. 用 ACL 控制器安全性。
2. 在 redis.conf 配置文件增加下面这一行配置, 即可把 redis 绑定在单个接口上(但并不是只有接受这个网卡的数据)。
bind 127.0.0.1
3. 给 redis 加上较长密码(无需要记住)
4. 在 redis.conf 配置启用认证功能。
5.SSL 代理
6. 禁用指定命令。
************************************** Redis 配置 **********************************************
daemonize 如果需要在后台运行, 把该项改为 yes
pidfile 配置多个 pid 的地址 默认在 /var/run/redis.pid
bind 绑定 ip, 设置后只接受来自该 ip 的请求
port 监听端口, 默认为 6379
timeout 设置客户端连接时的超时时间, 单位为秒
loglevel 分为 4 级,debug、verbose、notice、warning
logfile 配置 log 文件地址
databases 设置数据库的个数, 默认使用的数据库为 0
save 设置 redis 进行数据库镜像的频率
rdbcompression 在进行镜像备份时, 是否进行压缩
Dbfilename 镜像备份文件的文件名
Dir 数据库镜像备份的文件放置路径
Slaveof 设置数据库为其他数据库的从数据库
Masterauth 主数据库连接需要的密码验证
Requirepass 设置登录时需要使用的密码
Maxclients 限制同时连接的客户数量
Maxmemory 设置 redis 能够使用的最大内存
Appendonly 开启 append only 模式
以下了解即可:
Appendfsync 设置对 appendonly.aof 文件同步的频率
vm-enabled 是否开启虚拟内存支持
vm-swap-file 设置虚拟内存的交换文件路径
vm-max-memory 设置 redis 使用的最大物理内存大小
vm-page-size 设置虚拟内存的页大小
vm-pages 设置交换文件的总的 page 数量
vm-max-threads 设置 VM IO 同时使用的线程数量
Glueoutputbuf 把小的输出缓存存放在一起
hash-max-zipmap-entries 设置 hash 的临界值
Activerehashing 重新 hash
*******************************************************************
5 种数据类型: 字符串、哈希、链表、集合、有序集合。
支持:push/pop、add/remove 、取交集、并集、差集、排序。
redis === 同步 ==== mysql
同时也会将数据写到硬盘上。所以数据是安全的(除突然断电外, 重启服务会写到 dump.rdb 文件中)
*******************************************************************
select num# 选择库, 默认在 0 库, 共 16 个库
auth liweijie# 授权用户所需密码(密码就是 redis.conf 中配置的密码)
flushdb# 清空数据库。
String(字符串)类型:
set name lijie# 设置键 name 的值为 lijie
get name# 获取 name 的值。
keys *# 查询所有的键。
setnx name liweijie# 如果键已存在则返回 0, 不更新, 防止覆盖。
setex haircolor 10 red # 设置键的值的有效期为 10 秒。
setrange email 6 lampbre.com# 替换键的值从第 6 个字符开始换为 lampbre.com
mset name1 李大伟 name2 李小伟 #设置多个键的值。
msetnxname1 张三 name3 李四 #判断键是否存在, 不存在则设置, 否则不设置返回 0
mget name1 name2 name3# 一次获取多个键的值。
getset name1 Tom# 重新设置键的值, 并返回旧的键值。
getrange email 6 18# 截取 email 键的值, 从第 6 -18 位间的字符。
incr uid# 每次自增 1 (如果 key 中 uid 不存在, 则设置并从 0 开始, 下同)
incrby uid 5# 每次自增 5
incrby uid -5# 每次自减 5
decr uid # 每次自减 1
decrby uid 5# 每次自减 5
appendname1 @126.com# 给 name1 的值, 添加字符串 @126.com
strlenname1# 返回键 name1 的值的长度。
*************************************************************************
Hashes(哈希)类型:
hset user:001 name liweijie# 哈希设置用户 user:001 的 name 键值为 liweijie
hset user:001 age 21# 同样, 增加一个 age 键值为 21
hsetnx user:001 age 22# 同上, 但检测键是否存在。若不存在创建。
hmset user:002 name liweijie2 age 26 sex 1# 同时设置多个键的值。
hget user:001 name# 哈希获取用户 user:001 的 name 键的值。
hget user:001 age # 同上。
hmget user:001 name age sex# 获取多个指定的键的值。
hgetall user:001# 获取所有键的值。
hincrbyuser:001 age -8# 在指定键上加上给定的值。
hexists user:001 sex# 检测指定的键值是否存在。
hlen user:001# 返回指定哈希的键个数 / 字段个数。
hdel user:001 sex# 删除指定 (user:001) 哈希的指定字段或是键值。
hkeys user:003# 返回哈希里所有字段或是键值。
*********************************************************************
Lists(链表)类型及操作(棧或队列):
lpush mylist world #从头部插入字符串
lpush mylist hello #同上
lrange mylist 0 -1# 获取从 0 到最后一个如[1) hello 2) world ]
rpush mylist jiejie #在尾部插入
linsert mylist before hello this is linsert # 指定插入位置(在 hello 之前插入)。
lset mylist 0 what #设置修改指定下标的值。
lrem mylist 1 hello #删除 (1 个) 一个值为 hello 的元素。(n 0 从尾部删除,n= 0 全部删除)
ltrim mylist 1 2 # 保留表中下标为 1 / 2 的元素。
lpop mylist# 弹出开头元素并返回。
rpop mylist# 弹出尾部元素并返回。
rpoplpush mylist mylist2 # 从 mylist 尾部弹出插入到 mylist2 的头部。
lindex mylist 0# 获取表下标为 0 的元素值。
llen mylist# 返回表元素个数(相当于 count($arr ))。
*********************************************************************
sets(集合)类型及操作(好友推荐、blog、tag 功能):
smembers myset# 查看 myset 集合中所有元素值。
sadd myset hello #向 mysets 集合中添加一个值 hello
srem myset hello #删除 myset 集合中名称为 hello 的元素。
spop myset # 随机弹出并返回 mysets 中的一个元素。
sdiff myset2 myset3# 返回 myset2 中的与 myset3 的差集(以 myset2 为准)。
sdiffstore myset4 myset2 myset3# 返回 myset2 中的与 myset3 的差集, 并存入 myset4 中去。
sinter myset2 myset3# 返回 myset2 与 myset3 的交集。
sinterstore myset5 myset2 myset3# 返回 myset2 与 myset3 的交集, 并存入 myset5 中去。
sunion myset2 myset3# 求并集(去重复)
sunionstore myset6 myset2 myset3# 求并集, 并存入 myset6 中去。
smove myset2 myset3 three #将 myset2 中的 three 移到 myset3 中去。
scard myset2# 返回元素个数。
sismember myset2 one #判断元素 one 是不是 myset2 集合的(相当于 is_array())。
srandmember myset2# 随机返回 myset2 集合中的一个元素, 但不删除(相当于 array_rand())。
*********************************************************************
sorted sets(有序集合)类型及操作(以 scores 排序):
zadd myzset 1 one #向顺序 1 的添加元素 one
zadd myzset 2 two #同上。
zadd myzset 3 two #相当于更新顺序为 2 的值
zrange myzset 0 -1 withscores# 查看所有元素并带上排序(默认升序)。
zrem myzset two #删除 two
zincrby myzset 2 two #将 two 的顺序值加上 2
zrank myzset two #返回集合中元素的索引下标值。
zrevrank myzset two# 元素反转并返回新下标值。
zrevrange myzset 0 -1 withscores# 按顺序反转(相当于降序排序)
zrangebyscore myzset 1 10 withscores# 返回顺序为 1 -10 的元素(可做分页)。
zcount myzset 1 10 # 返回顺序在 1 -10 之间元素的个数。
zcard myzset# 返回集合中所有元素的个数。
zremrangebyrank myzset 1 2# 删除集合中下标为 1 到 2 的元素。
zremrangebyscore myzset 1 10# 删除集合中顺序为 1 到 10 的元素。
Redis 常用命令
键 / 值相关命令。
keys * # 查询所有
keys user*# 查询指定的
exists user:001# 判断是否存在。
del name# 删除指定的键。
expire addr 10# 设置过期时间
ttl addr# 查询过期时间
select 0 # 选择数据库
move age 1# 将 age 移到 1 数据库。
get age # 获取
persist age# 移除 age 的过期时间。
randomkey# 随机返回一个 key
rename name1 name2# 重命名键
type myset# 返回键的类型。
ping # 测试 redis 连接是否存活。
echo lamp# 输出一个 lamp
select 10# 选择数据库。
quit/exit/crtl+C# 退出客户端
dbsize# 返回库里的键的个数。
服务器相关命令:
info# 显示 redis 服务器的相关信息。
config get */loglevel # 返回所有 / 指定的配置信息。
flushdb# 删除当前库中的所有键 / 表。
flushall# 删除所有数据库中的所有键 / 表
二、Redis 高级部分:
1、Redis 安全性:
1. 用 ACL 控制器安全性。
2. 给 redis 加上较长密码
# requirepass foobared
requirepass beijing
3. 在 redis.conf 配置启用认证功能。
方式一:Auth beijing
方式二:./redis-cli -a beijing
4. 在 redis.conf 配置文件增加下面这一行配置, 即可把 redis 绑定在单个接口上(但并不是只有接受这个网卡的数据)。
bind 127.0.0.1(单台机器的时候可以配置, 分布式或主从复制时最好不要配置)
5.SSL 代理
6. 禁用指定命令。
2、Redis 主从复制:
redis 只需在从服务器 (slave) 上配置即可:
slaveof 211.122.11.11 6379 # 指定 master 的 ip 和端口
masterauth beijing# 这是 master 主机的密码
Info# 查看主 / 从服务器的状态。
3、Redis 事务处理:
Redis 事务很不完善。
4、Redis 持久化机制:
1. 两种方式: 一、备份数据到磁盘 (快照)[ snapshotting(快照) 也是默认方式]
二、记录操作命令 [ Append-only file(缩写 aof) 的方式]
一、备份数据到磁盘 (快照)[ snapshotting(快照) 也是默认方式]
save 900 1 #900 秒内如果超过 1 个 key 被修改, 则发起快照保存
save 300 10 #300 秒内容如超过 10 个 key 被修改, 则发起快照保存
save 60 10000
二、记录操作命令 [ Append-only file(缩写 aof) 的方式](较安全持久化)
appendonly yes # 启用 aof 持久化方式
# appendfsync always // 收到写命令就立即写入磁盘, 最慢, 但是保证完全的持久化
appendfsync everysec // 每秒钟写入磁盘一次, 在性能和持久化方面做了很好的折中
# appendfsync no // 完全依赖 os, 性能最好, 持久化没保证
感谢你能够认真阅读完这篇文章,希望丸趣 TV 小编分享的“Redis 如何安装使用”这篇文章对大家有帮助,同时也希望大家多多支持丸趣 TV,关注丸趣 TV 行业资讯频道,更多相关知识等着你来学习!