redis学习-01

Redis简介

  • 什么Redis
    • Redis是一个完全开源免费,遵守BSD协议,是一个高性能(NOSQL)的key-value 数据库。
  • Redis特点
    • 性能极高 Redis能度的速度是110000次/s.写的速度是81000次/s
    • 丰富的数据类型 String Hash List Set 及 Ordered Set 数据类型操作
    • 原子性 Redis的所有操作都是原子性的,意思是要么成功,要么失败,完全不执行,单个操作是原子性的,多个操作也支持事务,即原子性,通过MULTI 和EXEC执行包起来。
  • Redis缺点
    • 持久化 Redis直接将数据存储到内存中,要将数据保存到磁盘上,Redis可以使用两种方式实现持久化过程。定时快照:每隔一段时间将整个数据库写到磁盘上,每次均是写全部数据,代价非常高。第二种方式基于语句追加(aof),值追踪变化的数据,但是追加的log可能过大,同时所有的操作均重新执行一遍 ,恢复速度慢。
    • 耗内存 占用内存过高,单机版的redis处理能力有限,无法高可用

Redis的安装
Redis 在linux上面安装方式

wget http://download.redis.io/releases/redis-5.0.7.tar.gz
tar -zxvf redis-5.0.7.tar.gz -C /opt/ #将解压后的文件存储到/opt/下
cd redis-5.0.7  #进入解压后的目录    
# 注意redis使用c语言编写的 因此需要gcc编译器  yum -y install gcc automake autoconf libtool make gcc-c++
make
#执行安装目录进行安装
make PREFIX=/usr/local/redis install  #将redis安装在/usr/local/redis下

如果出现安装失败 记得清除之前编译出错的文件 使用以下的命令,然后再重新编译
make distclean
启动redis服务

#在安装目录下/usr/local/redis/bin下执行
./redis-server

启动redis客户端
执行命令 进入redis安装目录/usr/local/redis
./bin/redis-cli
启动redis客户端命令语法
redis-cli -h IP地址 -p 端口 //默认IP本机 端口6379
退出客户端
CTRL+C

Redis中内存维护策略
redis作为优秀的中间缓存件,时常会存储大量的数据,即使采取了集群部署来动态扩容,也应该即使的整理内存,维持系统性能。
在redis中有两种解决方案
一 为数据设置超时时间

设置过期时间

expire key time(以秒为单位) 这是常用的方式 设置key的过期时间
setex key seconds value -字符串独有的方式
命令介绍
ttl key 查看key剩下的有效时间
keys * 查看所有的数据
ttl key返回值是-1的话 是永久生效 如果是-2表示键失效
在这里插入图片描述

  • 除了字符串有自己独有设置过期时间的方法外,其他方法都需要依靠expire方法来设置时间
  • 如果没有设置时间 那缓存就是永不过期
  • 如果设置了过期时间,之后又想让缓存永不过期,使用 persist key

二 采用LRU算法动态将不用的数据删除
在这里插入图片描述
自定义配置redis
进入对应的安装目录 /usr/local/redis
修改redis.conf 配置文件

damonize no 修改为daemonize yes 守护进程启动
bind 127.0.0.1 注释掉 允许除本机以外的机器访问redis服务
reuirepass 设置密码  设定数据库密码

在这里插入图片描述
使用自己的redis.conf启动redis
./redis-server ../redis.conf

使用密码登录redis
./redis-cli -a 密码
在这里插入图片描述

Redis关闭

  1. 第一种关闭方式
    (断电,非正常关闭,容易数据丢失)
    查询redis进程id
    ps aux | grep redis
    kill -9 pid
    该种方式只会根据配置文件中设置的保存秒数来进行保存
    save <seconds> <changes>
    在这里插入图片描述
    save 900 1 即监测 如果到900秒后有1个数据发生变化就会将数据同步到文件中即 dump.rdb文件中

  2. 第二种关闭方式
    (正常关闭 数据会保存)
    在客户端执行shudown操作
    在这里插入图片描述
    Redis远程连接
    centos版本是7 防火墙的命令和centos6的差别非常大
    查看防火墙状态
    firewall-cmd --state
    开启防火墙
    systemctl start firewalld.service
    永久开放6379端口
    firewall-cmd --zone=public --add-port=6379/tcp --permanent

Redis常用的命令
redis的数据类型 string (字符串) hash (hash) list (列表) set (集合)和 zset(sorted set:有序集合)

常用命令key管理
keys * - 查询满足的所有键 可以模糊查询 比如 keys abc*
exists key - 是否存在执行的key
expire key second - 设置某个key的过期时间 时间为妙
del key - 删除某个key
ttl key - 查询距离过期的时间 当key不存在时 返回值-2 存在但是没有设置剩余生存时间时 返回-1 以秒为单位
persist key - 取消过去时间
PERPIRE key milliseconds - 修改key的过期时间 为毫秒
select : - 选择数据库 数据库为0-15 ;select 2
move key dbindex - 将当前的数据key转移到其他数据库
randomkey - 随机返回一个key
rename key key2 - 重命名key
echo : - 打印命令
dbsize : - 查询数据库的key数量
info - 查看数据库信息
config get - 实时转储收到的请求 返回相应的配置
flushdb - 清空当前数据库
flushall - 清空所有数据库

String 命令
赋值语法
set key value 直接赋值多次赋值会覆盖
setnx key value 如果key不存在的话就赋值为value 如果存在不赋值
setex key seconds value 设置具有过期时间的键值对
SETRANGE string offset value 替换字符串
egg:
在这里插入图片描述
取值语法
get key 取值
getrange key start end 包含start 和end位置的字符
getset key value 命令用于设置指定key的值 并返回key的旧值 当key 不存在返回nil
strlen key 返回key锁储存字符串的长度

删值语法
del key 删除指定的key 如果存在返回值数字类型
批量写 mset k1 v1 k2 v2 … 一次性写入多个值
批量读 mget k1 k2 k3 …

自增自减
incr key 自增 incrby key 增量值
decr key 自减 decrby key 增量值
incrby key increment 增加步长

List命令

lpush person sofency alice sophia  //向链表中添加元素 多个值
lrange person 0 -1  //展示列表中所有的元素
lpop person  从列表的左边弹出
rpop person 从列表的右边弹出
lset person 0 alice  //替换下标为0的元素 如果不存在值 或者下表越界 会出错
linsert person after|before "sofency" "hhh" //在sofency字段之前插入hhh

Hash命令
可以看做存储的是对象
hset key filed value 设置一个域的值 对应的取值 hget key filed
hmset key field1 value1 field2 value2 ...对应的取值 hmget key field1 filed2
hgetall key 获取所有的字段
删除特定的字段
hdel key field field1 删除一个或者多个field
hlen key 获取hash表中字段的数量
hkeys key 获取hash表中所有的字段
在这里插入图片描述

set命令
添加

sadd student sofency alice// 向里面添加元素
smembers student //展示里面所有的元素
spop student  //随机移除元素
//并交叉 
//对于共同关注来说,我们需要这样做
sadd key1 a b c
sadd key2 a d f
sdiff  key1 key2   key2和key1不同的元素 显示的是  d  f 
sdiff key2 key1    key1和key2不同的元素  显示的是 b c
sinter key1 key2  key1和key2共有的元素  a
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值