一篇文章教你学会Redis基础知识

一。前期储备知识
1.什么是NOSql

因为Redis是归类为NoSql的,所以我们在了解Redis前应该先了解一下什么是NoSql

NoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在处理web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,出现了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。–引自百度百科

NoSql分类:

类型代表
键值对数据库Redis,Memcache
列存储数据库Hbase,Cassandra
文档型数据库MongoDB,CouchDB
图形数据库Neo4J,FlockDB
2.什么是分布式缓存

分布式缓存:是一种在分布式计算领域为降低数据库查询压力,提升读取速度性能,基于内存的跨服务器缓存

二。什么是Redis

Redis是一种NoSql数据库,是一种分布式缓存中间件,数据是以一种key-value的形式进行存储,类似于map形式,提供海量数据访问存储,数据存储在内存当中,读取更快。总的来说Redis是一种开源的,可以通过水平扩展形成一个集群的分布式非关系型性能非常高的缓存中间件

三。技术选型
1.为什么要使用缓存中间件

例如双十一时有大量的请求进来,如果直接去访问数据库对数据库的压力太大了,根据二八法则,查询的请求会远远多于购买的请求,也就是说查询的操作要多于修改的操作,这个时候我们就可以在数据库前面加一个Redis缓存,使得请求不用直接去访问数据库而是去访问缓存,这样就大大的提高了系统的性能。
举例来说:我们去饭店吃饭,如果点每一道菜前都需要服务员去后厨确认一下材料够不够的话,这样效率就很会特别低,但是如果有一个记事本,在每天采购的时候就把材料记在上面,然后每点一次菜把材料减少,这样服务员就不用每次都去后厨去询问了,这样效率就提高了。这个记事本就相当于缓存中间件

2.缓存方案对比:Ehcache: VS Memcache VS Redis
  • Ehcache:

EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。

优点:基于JAVA开发,基于JVM缓存,简单,轻巧方便
缺点:集群,分布式不支持缓存共享
适合于单应用场景

  • Memcache:

memcache是一套分布式的高速缓存系统,由LiveJournal的Brad Fitzpatrick开发,但目前被许多网站使用以提升网站的访问速度,尤其对于一些大型的、需要频繁访问数据库的网站访问速度提升效果十分显著 [1] 。这是一套开放源代码软件,以BSD license授权发布。

优点:简单的key-value存储,内存使用率比较高,多核处理多线程
缺点:无法容灾,无法持久化,数据结构单一
适用于对数据稳定性要求不高,最求高性能的环境

  • Redis:

Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

优点:丰富的数据结构,可以持久化,支持集群,内存数据库
缺点:单线程,单核
适用于:存在缓存共享,分布式部署,缓存内容庞大的场景

四。Linux下的Nginx的安装
  1. 下载官网:https://redis.io/download
    选择下载稳定版本,不稳定版本可以尝鲜,但是不推荐在生产使用。上传至linux
    在这里插入图片描述
  2. 安装 Redis解压redis:
    tar -zxvf redis-5.0.5.tar.gz
    得到:在这里插入图片描述
  3. 安装gcc编译环境,如果已经安装过了,那么就是 nothing to do
    yum install gcc-c++
  4. 进入到 redis-5.0.5 目录,进行安装:
    make && make install
  5. 执行完毕后安装成功配置redis,cd utils在utils下,拷贝redis_init_script到/etc/init.d目录,目的要把redis作为开机自启动
    cp redis_init_script /etc/init.d
  6. 创建 /usr/local/redis,用于存放配置文件
    mkdir /usr/local/redis
    在这里插入图片描述
  7. 拷贝redis配置文件:
    拷贝到 /usr/local/redis 下
    cp redis.conf /usr/local/redis/
  8. 修改redis.conf这个核心配置文件修改
    daemonize no -> daemonize yes,目的是为了让redis启动在linux后台运行
    在这里插入图片描述
    9.修改redis的工作目录:在这里插入图片描述

建议修改为: /usr/local/redis/working,名称随意,并且如果要是没有这个文件夹,记得创建
10.修改如下内容,绑定IP改为 0.0.0.0 ,代表可以让远程连接,不受ip限制
在这里插入图片描述
9. 最关键的是密码,默认是没有的,一定要设置

在这里插入图片描述
10. 进入/etc/init.d/修改 redis_init_script 文件中的redis核心配置文件为如下:在这里插入图片描述
并且修改redis核心配置文件名称为:6379.conf
11. 为redis启动脚本添加执行权限,随后运行启动redis:
chmod 777 redis_init_scrip
./redis_init_scrip start
12.检查redis进程:
在这里插入图片描述
到此redis安装并且启动成功!
13. 设置redis开机自启动,修改 redis_init_script,添加如下内容
#chkconfig: 22345 10 90
#description: Start and Stop redis
如图所示:

#chkconfig: 22345 10 90
#description: Start and Stop redis

在这里插入图片描述
14. 随后执行如下操作:chkconfig redis_init_script on
重启redis,再看进程:在这里插入图片描述

五。Redis命令行客户端的基本操作

redis-cli -a password shutdown:关闭redis
./redis_init_script stop:关闭redis
redis-cli:进入到redis客户端
auth pwd:输入密码
set key value:设置缓存
get key:获得缓存
del key:删除缓存
redis-cli -a password ping:查看是否存活

六。Redis五种常见数据类型
1. String

string: 最简单的字符串类型键值对缓存,也是最基本的

key相关

keys *:查看所有的key (不建议在生产上使用,有性能影响)
type key:key的类型

string类型

get/set/del:查询/设置/删除
set rekey data:设置已经存在的key,会覆盖
setnx rekey data:设置已经存在的key,不会覆盖
set key value ex time:设置带过期时间的数据
expire key:设置过期时间
ttl:查看剩余时间,-1永不过期,-2过期
append key:合并字符串
strlen key:字符串长度
incr key:累加1
decr key:类减1
incrby key num:累加给定数值
decrby key num:累减给定数值
getrange key start end:截取数据,end=-1 代表到最后
setrange key start newdata:从start位置开始替换数据
mset:连续设值
mget:连续取值
msetnx:连续设置,如果存在则不设置

其他

select index:切换数据库,总共默认16个
flushdb:删除当前下边db中的数据
flushall:删除所有db中的数据

2.hash

hash:类似map,存储结构化数据结构,比如存储一个对象(不能有嵌套对象)

使用

hset key property value
-> hset user name abc
-> 创建一个user对象,这个对象中包含name属性,name值为abc
hget user name:获得用户对象中name的值
hmset:设置对象中的多个键值对
-> hset user age 18 phone 139123123
hmsetnx:设置对象中的多个键值对,存在则不添加
-> hset user age 18 phone 139123123
hmget:获得对象中的多个属性
-> hmget user age phone
hgetall user:获得整个对象的内容
hincrby user age 2:累加属性
hincrbyfloat user age 2.2:累加属性
hlen user:有多少个属性
hexists user age:判断属性是否存在
hkeys user:获得所有属性
hvals user:获得所有值
hdel user:删除对象(要先删除里面的对象)

3.list

list:列表,[a, b, c, d, …]

使用

lpush userList 1 2 3 4 5:构建一个list,从左边开始存入数据
rpush userList 1 2 3 4 5:构建一个list,从右边开始存入数据
lrange list start end:获得数据
lpop:从左侧开始拿出一个数据
rpop:从右侧开始拿出一个数据
llen list:list长度
lindex list index:获取list下标的值
lset list index value:把某个下标的值替换
linsert list before/after value:插入一个新的值
lrem list num value:删除几个相同数据
ltrim list start end:截取值,替换原来的list

4.set

set:集合,自动去重

使用

sadd set duck pig cow sheep pig pig 创建一个set
SMEMBERS set 查看set
SCARD set查看值的个数
SISMEMBER set pig 判断值是否存在
srem set duck 追加值
spop set 随机移除值,后面加数字就是一次移除几个
SRANDMEMBER set 随机获取值,后面加数字就是一次获取几个
SMOVE set1 set2 7 从set1中把7这个值移动到set2里
sdiff set1 set2 set1和set2的差集
SINTER set1 set2 set1和set2的交集
SUNION set1 set2set1和set2的并集

5.zset

zset:排序的set,可以去重可以排序,比如可以根据用户积分做排名,积分作为set的一个数值,根据数值可以做排序。set中的每一个memeber都带有一个分数

zadd zset 10 value1 20 value2 30 value3:设置member和对应的分数
zrange zset 0 -1:查看所有zset中的内容
zrange zset 0 -1 withscores:带有分数
zrank zset value:获得对应的下标
zscore zset value:获得对应的分数
zcard zset:统计个数
zcount zset 分数1 分数2:统计个数
zrangebyscore zset 分数1 分数2:查询分数之间的member(包含分数1 分数2)
zrangebyscore zset (分数1 (分数2:查询分数之间的member(不包含分数1 和 分数2)
zrangebyscore zset 分数1 分数2 limit start end:查询分数之间的member(包含分数1 分数2),获得的结果集再次根据下标区间做查询
zrem zset value:删除member
Redis在线手册

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值