redis学习指南
一、redis安装
# 安装最新版
yum install -y epel-release vim atop htop net-tools git wget gcc-c++
yum clean all
yum maakecache
wget -P /usr/local/src http://download.redis.io/releases/redis-5.0.3.tar.gz
cd /usr/local/src && tar zxvf redis-5.0.3.tar.gz
cdredis-5.0.3 && maake
mkdir-p/usr/local/redis/etc
cdsrc &&makeinstallPREFIX=/usr/local/redis
cd../ &&mvredis.conf /usr/local/redis/etc
sed-i's@daemonize no@daemonize yes@g'/usr/local/redis/etc/redis.conf
echo'export PATH=/usr/local/redis/bin:$PATH'>> /etc/profile
source/etc/profile
# 配置开机启动
vim /etc/systemd/system/redis-server.service
-------------------------------------start----------------------------------------
[Unit]
Description=The redis-server Process Manager
After=syslog.target network.target
[Service]
Type=simple
PIDFile=/var/run/redis_6379.pid
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
ExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/bin/kill -SIGINT $MAINPID
[Install]
WantedBy=multi-user.target
---------------------------------------end-------------------------------------------
systemctl enable redis-server
systemctl start redis-server
二、redis数据类型
# redis string
redis 设置字符串
127.0.0.1:6379>setmykey abc
OK
127.0.0.1:6379>getmykey
"abc"
EX seconds − 设置指定的到期时间(以秒为单位)。
PX milliseconds-设置指定的到期时间(以毫秒为单位)。
NX-仅在键不存在时设置键。
XX-只有在键已存在时才设置
# redis 加法计算
set a100
incr a
(intege)101
incr a
(integer)102
incrby a 100
(integer)202
incr 每次加1
incrby 加法运算
# redis 创建数组
mset a10 b10 c10
mget a b c
1)"10"
2)"10"
3)"10"
# redis 列表
rpush mylist A
(integer)1
rpush mylist B
(integer)2
lpush mylist first
(integer)3
lrange mylist0-1
1)"first"
2)"A"
3)"B"
del mylist
rpush mylist a
rpush mylist b
lpush mylist c
lrange mylist0-1
1)"c"
2)"a"
3)"b"
lpop mylist
"c"
lrange mylist0-1
1)"a"
2)"b"
rpop mylist
"b"
lrange mylist0-1
1)"a"
rpush 插入一个新的列表在尾部
lpush 插入一个新的列表在首部
lrange 检索0第一个-1最后一个
del 删除列表
lpop 从前将列表中元素剔除
rpop 从后将列表中元素剔除
redis 不存储空列表,当列表中元素被删除后,自动删除空列表
# redis hashes
hmset user:a usernam sb birth10verfile1
hget user:a username
"sb"
hget user:a birth
"10"
hgetall user:a
1)"username"
2)"sb"
3)"birth"
4)"10"
5)"verfile"
6)"1"
hmget user:a username birth c
1)"sb"
2)"10"
3) (nil)
hincrby user:a birth10
(integet)20
redis hashes 字符串和字符字段之间的映射,展现对象的完美数据类型
hmset 设置多域的hash表
hgetall 获取指定key的所有信息
hget 获取单域的信息
hmget 获取多域的信息,返回为数组
hincrby hash字符加法运算
# redis 集合
set为无序集合,不包含相同的元素,支持不通集合合并,交集,找出不同的元素
sadd myset a b c
(integer)3
smembers myset
1)"a"
2)"b"
3)"c"
sismember myset1
(integer)1
sismember myset0
(integer)0
sismember myset a
(integer)1
sismember mys3
(integer)0
sadd 创建无序集合
smember 查看集合
sismember 匹配集合名称,内容及个数,成功返回为1,失败返回为0
有序集合,集合的成员唯一,前面有参数用来排序,访问速度快,提高性能
zadd hackers1"a"2"b"3"c"
(integer)1
zrange hackers0-1
1)"a"
2)"b"
3)"c"
zrevrange hackers0-1
1)"c"
2)"b"
3)"a"
zrange hackers0-1withscores
1)"a"
2)"1"
3)"b"
4)"2"
5)"c"
6)"3"
zadd 创建有序集合,集合名称必须为两位以上包含两位,需要加上序号参数
zrange 正序查看集合
zrevrange 倒序查看集合
withscores 返回参数记录值
三、redis常用命令
# exists and del
setmykey a
OK
exists mykey
(integer)1
del mykey
(integer)1
exits mykey
(integer)0
exists 判断key是否存在,存在返回为1,不存在返回为0,del删除key
# type and keys
setmykey a
OK
type mykey
string
keys my*
1)"myset"
2)"mykey"
type 返回key的类型
keys my* 返回匹配的key列表
# randomkey and clear
randomkey 随机获得一个已经存在的key
clear清除界面
# rename and renamenx
rename oldname newname 改key的名字,新建如果存在将会被替换
renamenx oldname newname 改key的名字,新建如果存在将会失败
dbsize 返回当前数据库key的总数
# 限制key的生存时间
setmykey a
expire mykey10
getkey
"a"
getkey
(nil)
expire 设置key 的过期时间
ttl key 查询key的过期时间
flushdb 清除当前数据库中所有的键
flushall 清除所有数据库中的所有键
# redis 设置命令
configgetrequirepass (查看密码)
configsetrequirepass123
auth123
configget*max-*-xxx* 查询数据最大数量
config resetstat 重置数据统计
# info 查看信息
1、server:redis server常规信息
2、clients:client 连接信息
3、memory:内存信息
4、persistence:rdb and aof 相关信息
5、stats:常规信息
6、replication:Master/slave 请求信息
7、cpu:cpu占用信息
8、cluster:redis集群信息
9、keyspace:数据库信息统计
10、all:返回所有信息
11、默认设置信息
四、redis管理
# 设置密码
方法一:
grep-nrequirepass /etc/redis/redis.conf
sed-i's@# requirepass@requirepass test@g'/etc/redis/redis.conf
serviceredis-serverrestart
redis-cli
auth test
redis-cli-atest
方法二:
configsetrequiress test
# 主从复制
1、master可以拥有多个slave
2、多个slave可以连接在同一个master上,还可以连接其他的slave,当master宕机后,相连的slave转变为master
3、主从复制不会阻塞master,再同步数据时,master 可以继续处理client请求
4、slave与master建立连接,发送sync同步命令
5、master会启动一个后台进程,将数据快照保存到文件中,同时master主进程会开始收集新的写命令并缓存
6、后台完成保存后,就将此文件发送给slave
7、slave将此文件保存在磁盘上
配置主从
----------------------------------------------start----------------------------------------
vim/usr/local/redis/redis.conf (主)
port6379
bind172.16.5.1127.0.0.1
daemonizeyes
pidfile /var/run/redis_6379.pid
requirepass redis
vim/usr/local/redis/redis.conf (从)
port6380
bind172.16.5.2127.0.0.1
daemonizeyes
pidfile /var/run/redis_6380.pid
masterauth redis
登录客户端(主)
redis-cli-aredis
127.0.0.1:6379>setname redis-master
127.0.0.1:6379> info repliaction
登录客户端(从)
redis-cli-aredis
配置主从
127.0.0.1:6380> slaveof 127.0.0.16379
127.0.0.1:6380> info repliaction
127.0.0.1:6380>get name
# 事务
只能client发起事务的命令可以连续执行,不会插入其他client命令,通过multi命令开始事务,后续的命令不会执行,被存放到一个对列中,当执行exec命令,redis顺序执行对列中所有命令,如果执行出错不会回滚。
multi
setname a
setname b
exec
getname
# 持久化
1、快照,将数据放到文件中,默认方式
将内存中的数据已快照的方式写入二进制文件中,默认文件为dunp.rdb,可以通过配置设置自动作快照持久化的方式,可配置redis在n秒内如果超过m个key被修改就自动保存快照。
save 9001900秒内如果超过超过1个key被修改,则发起快照保存
save 30010300秒内如果超过10个key被修改,则快照保存
2、append-only file 将读写操作保存在文件中
由于快照方式在一定时间间隔作一次,所以如果redis意外down掉的话,就会丢失最后一次次快照后的所有修改
aof 比快照有更好的持久化,使用aof,redis将每一个收到的写命令都通过wirte函数写入到文件中当redis启动会通过重新执行文件中保存的写命令来在内存中重新建立整个数据的内容
使用fsync函数强制os写入到磁盘的时间
appendonlyyes // 启用aof持久化
#appendfsync always // 收到命令就写入磁盘,最慢,数据最完整
appendfsync everysec // 每秒写入磁盘一次,性能和持久化方面做了折中
#appendfsync no // 完全依赖os,性能最好,持久化没有保证
redis学习指南的更多相关文章
- redis 学习指南
一.介绍 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.一个高性能的key-value数据库.并提供多种语言的API.说到Key-Value数据库NoSQL数 ...
- Golang redis 学习指南
安装 我使用的是 https://github.com/go-redis/r... 这个 golang 客户端, 因此安装方式如下: go get gopkg.in/redis.v4 接着在代码中导入 ...
- Java工程师学习指南第7部分:重新学习MySQL与Redis
本文整理了微信公众号[Java技术江湖]发表和转载过的Mysql和Redis相关优质文章,想看到更多Java技术文章,就赶紧关注本公众号吧吧. 大白话说说mysql 面试官:给我说说你平时是如何优化M ...
- Redis 小白指南(一)- 简介、安装、GUI 和 C# 驱动介绍
Redis 小白指南(一)- 简介.安装.GUI 和 C# 驱动介绍 目录 简介 安装 入门指令 GUI 工具 C# 驱动介绍 简介 ANSI C 编写,开源,基于内存,可持久化,一个键值对的数据库, ...
- Redis 小白指南(二)- 基础命令和五大类型:字符串、散列、列表、集合和有序集合
Redis 小白指南(二)- 基础命令和五大类型:字符串.散列.列表.集合和有序集合 引言 目录 基础命令 字符串类型 散列类型 列表类型 集合类型 有序集合类型 基础命令 1.获得符合规则的键名列表 ...
- Redis学习笔记(二)Redis支持的5种数据类型的总结之String和Hash
引言 在Redis学习笔记(一)中我们已经会安装并且简单使用Redis了,接下来我们一起来学习下Redis支持的5大数据类型. 简介 Redis是REmote DIctionary Server(远程 ...
- Redis学习笔记(一)关于在windows64位环境下的安装学习使用
前言 由于工作需要,目前我正在学习使用Redis.我当时学习Redis就从网上下载了点资料就开始学习了.入门看的是<REDIS入门指南>,这本书个人觉得很适合新手用来学习接触.根据书上的引 ...
- Redis 小白指南(二)- 聊聊五大类型:字符串、散列、列表、集合和有序集合
Redis 小白指南(二)- 聊聊五大类型:字符串.散列.列表.集合和有序集合 引言 开篇<Redis 小白指南(一)- 简介.安装.GUI 和 C# 驱动介绍>已经介绍了 Redis 的 ...
- Redis入门指南之三(入门)
本节主要介绍Redis的5种数据类型,同时使用Python API来操作Redis,其中python版本为3.5, redis版本为4.0.2. redis-py 的API的使用可以分类为: (1)连 ...
随机推荐
- 如何查看服务器CPU核心数和线程数
知道服务器CPU型号,那么我们如何在服务器里面查看服务器CPU核心数和线程数呢? 步骤: 先用鼠标右键点击屏幕最下方的任务栏空白处.会弹出一个菜单. 在菜单中用鼠标左键点选“启动任务管理器”. 点击任 ...
- Facebook POP 使用指南
Facebook POP 使用指南 Pop是一个动画引擎,用以扩展iOS.OSX的动画类型.相较于iOS.OSX中的基本动画效果,Pop扩展后支持弹簧动画效果与衰减动画效果,你可以用Pop动画引擎来构 ...
- python基础语法1
一.基础语法 1.常量 python语言没有真正的常量,它只是字面常量. 2.变量 变量是一个指针,它指向一块内存. 变量的命名规则: 1)只能包含字母.数字和下划线: 2)只能以字母或者下划线开始: ...
- TCP/IP 协议图
- Java.io 包(字节流)
I/O流概述 在 Java 中,把不同类型的输入.输出源抽象为流(Stream),而其中输入或输出的数据则称为数据流(Data Stream),用统一的接口表示,从而使程序设计简单明了.流是一组有顺序 ...
- nmap速查表v1.0(中文版)
基本语法: #nmap [扫描方式] [命令选项] {目标} 扫描目标格式: IPv4 地址: 192.168.1.1IPv6 地址:AABB:CCDD::FF%eth0主机名:www.target. ...
- 理解活在Iphone中的那些App (四)
App生存环境之宿主环境 终于开始说一些技术性的话题了,从这里开始的一些技术细节的东西,以前我也没有太刻意的注意过.为了写这个也是刚刚看了一点资料,如果有纰漏,恳请指出. 一个App生存的宿主环境主要 ...
- Unable to perform unmarshalling at line number 16 and column 63 in RESOURCE hibernate.cfg.xml. Message: cvc-elt.1: 找不到元素 'hibernate-configuration' 的声明。
七月 02, 2017 4:32:37 下午 org.hibernate.Version logVersionINFO: HHH000412: Hibernate Core {5.2.10.Final ...
- php反序列化
之前听漏洞银行的一个女生讲php反序列化.她说了一句.php反序列话找public变量. 导致我以为必须php反序列化.可控的变量必须是public or protected.private私有的变量 ...
- Hadoop学习之路(二十六)MapReduce的API使用(三)
影评案例 数据及需求 数据格式 movies.dat 3884条数据 1::Toy Story (1995)::Animation|Children's|Comedy 2::Jumanji (1995 ...