本文是基于redis开发与运维以及官方网站总结出来的,有想看的朋友请点击下面链接:
Redis开发与运维
Redis官方网站
1.String类型的常用命令
字符串类型是Redis最基础的数据结构,键值都是字符串类型。其他的几种类型都是在字符串类型基础上构建的,字符串类型的值实际上可以是字符串(包括JSON、XML)、数字(整数、浮点数)、甚至是二进制(图片、音频、视频),但是值最大不能超过512MB。
字符串的常用的命令如下:
get/set
获取value/设置value
mget/mset
批量获取、设置value
setex
设置一个带有有效期的key,默认是秒,如果想设置毫秒可以通过px
选项来进行设置
setnx
当一个key不存在的时候才能设置它的value
strlen
获取value的长度。注意一个中文存储的时候是三个字节
incr
自增1。当这个值不为整数的时候,返回错误,当这个值不存在的时候,把它当做0,会创建这个并自增1,返回1.
decr
自减1,同上
这些是常用的比较基础的命令,详细命令可查看:String详细命令
2.数据结构和存储类型
字符串在Redis中的内部编码有三种类型:
(1)int
8个字节的长整型
(2)embstr
小于等于39个字节的字符串
(3)raw
大于39个字节的字符串
3.命名方式
在我们的使用过程中,Redis官方建议我们用:来分隔我们的key的各个层次,比如在咱们的User表中id为1000的人的名字,在Redis里面就应该表示为: user : 1000 : name,我们的命名方式应该在能完整阐释我们的键之余再尽可能的简洁明了
4.使用场景
(1)缓存
缓存是我们用Redis的最常用场景,在以前的项目中用memcache来做缓存,但是最关键的一点是我们的数据安全得不到保障。memcache在挂掉后数据不可恢复,但是redis能通过aof等来进行恢复。
在我们最常用的场景中,通常使用redis作为mysql的前一层,我们请求数据的时候,首先查询redis有没有这个用户,如果有数据,直接进行返回,如果没有再去数据库进行查询,这里的redis缓存能很大的程度上缓解后端数据库的压力。
(2)Session中央缓存服务器
在分布式的项目中通常拥有多个应用服务器,每个应用服务器都有自身的session服务器,而我们通常会对这些应用服务器进行负载均衡。比如用户第一次访问的是应用服务器1,故在应用服务器1上拥有了自己的session,第二次访问的时候通过负载均衡将请求发送到应用服务器2,但是在应用服务器2上并没有我们的session,所以用户还需要重新登录,这样对用户的体验极差。
有了Redis之后,我们可以将用户的session全部保存在redis服务器上,这样我们访问的时候先去session服务器去查询是否用户已经登录过,如果已经登录过就返回这个session,如果没有登录则跳转到登录页面。
(3)控制点击次数
在我们的实际项目中,经常需要限制用户的点击次数,比如限制用户在一分钟之内只能点击5次。这个功能在redis上实现起来特别简单,当用户第一次点击的时候我们创建user?limit并将它的值设为1,并将它的过期时间设为60s,此后每一次点击自增1,判断是否超过5,当value超过5的时候返回异常