redis

redis简介

redis是一种基于key-value的NoSQL数据库,和memcached类似,只不过它支持的值类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)、hash(哈希类型)等多种数据结构和数据算大组成。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中,所以它的读写性能非常的强大。不仅如此,redis还可以将内存中的数据利用快照和日志的形式保存到磁盘上,并且在此基础上实现了master-slave(主从)同步。

redis重要的特性

  • 速度快
    redis所有的数据都缓存在内存中
    redis使用C语言实现
    redis使用单线程框架

  • key-value型数据结构服务器
    多种数据结构(字符串、哈希、列表、集合、有序集合)

  • 主从复制

  • 自带高可用和分布式
    哨兵
    集群

  • 支持数据持久化
    RDB和AOF

  • 丰富的功能
    提供了键过期功能(优惠券期限),可以实现缓存
    提供了发布订阅功能,可以实现消息系统
    提供pipeline功能,客户端可以一次性将一批命令传到redis,减少的网络开销

  • 简单稳定
    源码很少。3.0版本后,代码在5万行左右
    使用单线程模型法。使得redis服务端处理模型变得简单
    不依赖操作系统中的类库

  • 多种客户端语言
    PHP、Java、Python、C、C++、Nodejs等

redis应用场景

  • 缓存—键过期

    缓存session会话
    缓存用户信息。缓存中没有数据才去请求后端数据库,查到再返回给用户,同时保存到本地

  • 排行榜—列表&有序集合

    热度排名排行
    发布时间排行
    浏览记录

  • 计数器应用

    视屏播放次数
    商品浏览量

  • 社交网络—集合

    过滤共同习惯/爱好,推送,推广

  • 消息队列系统—发布订阅

    配合ELK实现日志收集

  • 购物车应用

    添加购物车(哈希)——hincrby
    勾选状态(集合)——sadd

安装redis

  1. 规划目录
mkdir -p /opt/redisCluster/6379/{data,conf,log,pid}
  1. 下载软件
wget http://download.redis.io/releases/redis-4.0.11.tar.gz
  1. 解压文件
tar xf redis-4.0.11.tar.gz -C /opt/redisCluster/ 
  1. 做软连接
ln -s /opt/redisCluster/redis-4.0.11/ /opt/redisCluster/redis
  1. 下载依赖文件
yum install -y gcc gcc-c++
  1. 安装
make && make install
  1. 配置文件(多实例仅需多个目录和多个配置文件)
daemonize yes
port 6379
logfile /opt/redisCluster/6379/log/redis_6379.log
dir /opt/redisCluster/6379/data
dbfilename dump.rdb
bind 192.168.8.19 127.0.0.1
pidfile /opt/redisCluster/6379/pid/redis_6379.pid
loglevel notice
masterauth 123
requirepass 123
  1. 启动
/opt/redisCluster/redis/src/redis-server /opt/redisCluster/6379/conf/redis_6379.conf
  1. 登录
redis-cli -a password -h 127.0.0.1 -p 6379

全局命令

redis有5中数据结构,它们是键值对中的值,对于键来说有以下一些通用的命令:

  • 查看所有命键

keys * //谨慎使用

  • 查看键的总数

dbsize

  • 检查键是否存在

exists key
删除键
del key
设置键过期
expire key seconds
//当超过过期时间后,会自动删除键
//通过ttl命令查看键的剩余时间
ttl返回值
-1:键永不过期
-2 键不存在

  • 查看键的数据类型

type key

数据类型

redis并不是简单地key-value存储,实际上它是一个数据结构服务器,支持不同类型的值。

  • 字符串
    字符串是redis中最简单的数据类型,如果只用这种数据类型redis就像一个持久化的memcache服务器
    操作命令:
    设置字符串值

set key value
获取字符串值
get key
多个key操作
mset key value key2 value2
mget k1 k2 k3
计时器
incr k1
incr k1 100 //直接设置加100
设置过期时间
expire k2 100
查看过期时间
ttl k1 //如果对一个设置了键过期的key重新set一个值那么该键永不过期
取消过期时间
persist k2

  • 列表
    redis列表是最简单的字符串列表,按照插入顺序,你可以从左边或者右边添加一个元素。

//lpush可向list的左边添加一个新元素
lpush list 1
//rpush可向list的右边添加一个新元素
rpush list 2
//lrange可以从list中取出一定范围的元素
lrange key start stop

  • 哈希
    哈希由(key-value)键值对组成。可以作为MySQL的缓存使用

//hmset命令设置hash中的多个域
HMSET id:100 name xm age 123 job ops
//hget 取回单个域
hget id:100 name
hmget 取回一系列的值
HMGET id:100 name age job
//hgetall 取回所有值
HGETALL id:100

  • 集合
    集合是字符串的无序集合。添加一个 string 元素到 key 对应的 set 集合中,成功返回1,如果元素已经在集合中返回 0,如果 key 对应的集合不存在则返回错误。和列表不同的是:set集合不允许出现重复的元素;

//添加一个或多个元素到集合
sadd s 1 2 3
//获取集合中的所有元素
smembers s
//获取两个集合的交集
sinter s1 s2
//获取两个集合的并集
sunion s1 s2
//获取两个集合的

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值