redis入门基础
- 环境: centos
一、安装
sudo su
cd
wget http://labfile.oss.aliyuncs.com/courses/106/redis-2.8.4.tar.gz
tar -xzvf redis-2.8.4.tar.gz
cd redis-2.8.4
make
几个文件:
- 服务端:src/redis-server
- 客户端:src/redis-cli
- 默认配置文件:redis.conf
# 设置环境变量
cp redis-server /usr/local/bin/
cp redis-cli /usr/local/bin/
# 运行测试
cd /root/redis-2.8.4
make test
# 启动redis-server
redis-server
二、服务命令
- 使用服务启动redis服务:
sudo service reids-server start - 查看redis状态 :
ps -ef | grep redis,netstat -nlt|grep 6379 - redis-cli 交互环境乱码:
redis-cli --raw
三、数据类型
帮助命令
help set # 查看set命令的帮助
1. string
set key value: 创建get key: 索引
$ sudo service redis-server start
$ sudo su
$ cd
$ redis-cli
> set mykey somevalue
> get mykey
加法器
> set counter 100 # 初始化
> incr counter # +1
> incr counter # +1
> incrby counter 50 # +50 自定义计数
incr让value成为一个整数, 并加法decrdecrby减法
> mset key1 value1 key2 value2 # 批量创建
> mget key1 key2 # 批量索引
2. lists
线性有序
如列表 mylist
# push 操作
> rpush mylist A # 插入元素到尾部
> rpush mylist B
> lpush mylist first # 插入新元素到头部
> lrange mylist 0 -1 # 索引, 0 是第一个, -1是倒数第一, -2 是倒数第二...
# pop 操作, 弹出(删除)
> rpop mylist # 从右边弹出一个元素
> lpop mylist # 从左边弹出一个元素
> del mylist # 删除
list 存在阻塞
3. hashes(散列)
字符串字段和字符串值之间的映射;
> hmset user:1000 username xiaoming birthyear 2019 verfied 1
# 创建一个多域的hash表
> hget user:1000 username # 获取指定单域
> hget user:1000 birthyear
> hgetall user:1000 # 获取key的所有信息
> hincrby user:1000 birthyear 10 # 修改增加了10
4. 无序集合 set
不允许宝行相同的成员的属性(非常方便去重);
以O(1)时间复杂度完成添加删除及测试元素是否存在
> sadd myset 1 2 3 # 创建一个无序集合myset
> sismember myset # 查看集合是否存在, 成功1,失败0
5. 有序集合
无重复元素的字符串集合, 不同之处是有序集合每个成员都关联了一个权值;
成员唯一, 但权值可重
> zadd hackers 1990 "a"
> zadd hackers 1995 "df"
> zadd hackers 1900 "ddz"
> zrange hackers 0 -1 # 查看
> zreverange hackers 0 -1 # 反序查看
> zrange hackers 0 -1 withscores # 返回记录值
四、常用命令
- exists and del
exists key: 判断 key是否存在 存在1, 否0;del key: 删除key, 成功1,失败0(key不存在)
- type and keys
type key: 返回元素数据类型(string,list, set, zset,hash)keys key-pattern: 返回匹配key的列表, 如 keys ming* (返回以ming开头的keys)
- randomkey and clear
randomkey: 随机获取一个已存在的keyclear: 清除界面
- rename and renamenx
raname oldname newname: 重命名; newname存在则会覆盖renamenx oldname newname: 重命名; newname存在则失败
- dbsize
dbsize: 返回key总数
五、时间相关命令
- 限定key生存时间
expire key seconds
- 查询key剩余生存空间
ttl key
- 清除key
flushdb: 清空当前库中的所有键flushall: 清空所有库中的所有键
六、设置相关命令
redis配置文件
config get: 读取运行的redis服务器的配置参数config set: 更改
如:
config get requirepass # 查看密码
config set requirepass 123456 # 设置密码位123456
auth 123456 # 认证密码
config get * # 查看所有(匹配)
config resetstat充值数据统计报告
七、查询信息
info [section]: 查询redis相关信息
[section]
server # Redis server 的常规信息
clients # Client 的连接选项
memory # 存储占用相关信息
persistence # RDB and AOF 相关信息
stats # 常规统计
replication # Master/Slave 请求信息
cpu # CPU 占用信息统计
cluster # Redis 集群信息
keyspace # 数据库信息统计
all # 返回所有信息
default # 返回常规设置信息
八、安全
密码配置文件 redis.conf
$ sudo service redis-server restart # 重启
- 密码认证(登录)
$ redis-cli
> auth 密码
或
$redis-cli -a 密码
九、主从复制
分担服务器压力, 部署多台服务器,, 分别用于缓存的读和写,
用于写的为主服务器, 读的为从服务器;
建立主从关系:
# slave 端执行命令
# slaveof ipaddress:port
> slaveof 127.0.0.1:6379
# 如何master服务器设置了密码,则需要在从服务器中设置好密码
> config set masterauth <password>
十、事务处理
当client 发送multi命令后进入事务, 后续命令不会执行, 而是存放到队列中, 执行exec后 redis按顺序执行队列中的命令;
(实际中不能依赖redis事务保证数据一致性)
> multi
> set name a
> set name b
> exec
> get name
十一、持久化机制
将内存中的数据长久存到磁盘中;
两种方式:
- snapshotting (快照), 将数据存到文件里;
save 900 1: 900s内如果超过1个key被修改, 则发起快照保存
- Append-only file (aof), 将读写操作放到文件中;
# 配置文件
appendonly yes //启用 aof 持久化方式
# appendfsync always //收到写命令就立即写入磁盘,最慢,但是保证了数据的完整持久化
appendfsync everysec //每秒钟写入磁盘一次,在性能和持久化方面做了很好的折中
# appendfsync no //完全依赖 os,性能最好,持久化没有保证
虚拟内存, 在2.6以上版本取消了(在后面的版本由redis自身管理)
十二、参考
- https://redis.io/topics/data-types-intro
- https://redis.io/commands/config-resetstat
- 实验楼: https://www.shiyanlou.com/courses/106
redis入门基础的更多相关文章
- Redis学习之路(二)之Redis入门基础
一.Redis基本介绍 (1)Redis介绍 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. 它支持多种类型的数据结构,如 字符串(string ...
- windows下使用redis,Redis入门使用,Redis基础命令
windows下使用redis,Redis入门使用,Redis基础命令 >>>>>>>>>>>>>>>> ...
- redis最基础的入门教程
Redis最基础入门教程 简介 Redis 简介 Redis 优势 Redis与其他key-value存储有什么不同? 字符串(Strings) 哈希(Hash) 列表(List) 集合(Sets ...
- Redis入门指南
随着互联网业务对性能需求日益强烈,作为Key/Value存储的Redis具有数据类型丰富和性能表现优异的特点.如果能够熟练地驾驭它,不管是把它用做缓存还是存储,对很多大型应用都很多帮助.新浪作为世界上 ...
- Redis入门教程(二)
推荐阅读: Redis入门教程(一)https://www.cnblogs.com/jichi/p/10285346.html 5. Redis 的数据结构 5.1 Redis 数据结构介绍 redi ...
- Docker入门基础(一)
Docker入门基础 Linux只存在文件目录,不存在“盘”的概念 Dockers优点:方便部署环境.资源占用少(微服务) Docker的三大概念 镜像:类似虚拟机的镜像.用俗话说就是安装文件.容器: ...
- Redis入门指南之三(入门)
本节主要介绍Redis的5种数据类型,同时使用Python API来操作Redis,其中python版本为3.5, redis版本为4.0.2. redis-py 的API的使用可以分类为: (1)连 ...
- Redis入门及主从配置
1.Redis入门简介 Redis是一个开源的使用ANSI C语音编写.支持网络.可基于内存亦可持久化的日志型,Key-Value数据库.支持存储的value类型包括 string(字符串).list ...
- 超强、超详细Redis入门教程【转】
这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下 [本教程目录] 1.redis是什么2.redis的作者何许人也3.谁在使用red ...
随机推荐
- linux常用命令大全(linux基础命令入门到精通+命令备忘录+面试复习+实例)
作者:蓝藻(罗蓝国度) 创建时间:2018.7.3 编辑时间:2019.4.29 前言 本文特点 授之以渔:了解命令学习方法.用途:不再死记硬背,拒绝漫无目的: 准确无误:所有命令执行通过(环境为ce ...
- FFMpeg音频重采样和视频格式转
一.视频像素和尺寸转换函数 1.sws_getContext : 像素格式上下文 --------------->多副图像(多路视频)进行转换同时显示 2.struct SwsContext ...
- javaweb+spring 项目集成异常的处理
在web项目开发中,一个系统应该要考虑到异常情况的处理,并且应该当异常发生时应该需要记录相应的异常日志,对于用户而言则不能直接抛出异常,需要考虑到用户的体验: 以下就介绍基于spring框架的基础上的 ...
- jvm(1)类的加载(三)(线程上下文加载器)
简介: 类加载器从 JDK 1.0 就出现了,最初是为了满足 Java Applet 的需要而开发出来的. Java Applet 需要从远程下载 Java 类文件到浏览器中并执行. 现在类加载器在 ...
- Java并发(二)-实现同步
并发带来的问题 先看一个单例类,后文中都会用到: public class SimpleWorkingHardSingleton { private static SimpleWorkingHardS ...
- JS:函数柯里化
函数柯里化 柯里化 在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术. 简单来说,就 ...
- spring基础回顾
1.什么是Spring框架?Spring框架有哪些主要模块? Spring框架是一个为Java应用程序的开发提供了综合.广泛的基础性支持的Java平台.Spring帮助开发者解决了开发中基础性的问题, ...
- 使用js栈stack类的实现
使用js栈stack类的实现 /*使用栈stack类的实现*/ function stack() { this.dataStore = [];//保存栈内元素,初始化为一个空数组 this.top = ...
- (转)python高级:列表解析和生成表达式
一.语法糖的概念 “糖”,可以理解为简单.简洁,“语法糖”使我们可以更加简洁.快速的实现这些功能. 只是Python解释器会把这些特定格式的语法翻译成原本那样复杂的代码逻辑 我们使用的语法糖有: if ...
- android Service 学习总结
学习android开发已经四五个月,由于项目中职责的原因一直没有接触过Service的实际项目,今天重新学一遍Service用法. 问题: 作为四大组件,为什么需要Service? 它与Thread又 ...