通过上篇文章,已经在VMWare的虚拟机上的CentOS环境下,安装了Redis,接下来就是实际应用Redis的场景,这里当前主要以String类型、BitMap类型的相关操作进行实践。
一.Redis的启动及帮助操作
-
指定数据库序列号进入redis
之前已经将Redis进行了服务化并且将Redis的路径添加到了环境变量之中,因此,可以通过redis自带的客户端进入到Redis的操作界面中,主要通过以上的命令:
redis-cli -p 6379 -n 序列号
总结:
通过以上的命令,可以直接启动redis客户端,并开启6379的实例(redis中是以端口号来区分实例),如上面的-p 6379 那就是进入到端口号为6379的redis实例;针对每个redis实例,其默认会有对应15个数据库,因此,想指定进入的redis实例下的数据库,可以通过-n参数来指定,一般一个redis实例对应的数据库序列号是0~15(总共16个),redis的服务端口号一般默认是6379
-
不指定数据库序列号进入redis
通过不指定redis的数据库序列号进入,是默认进入到序列号为0的redis实例的数据库中,输入的命令如下所示:
redis-cli -p 6379
如果进入到Redis系统之中,想更换数据库,可以使用如下命令,进行数据库的切换
select 序列号
-
查看帮助文档
对一个新程序的相关操作,肯定会有一些不太清楚的地方,这时候,可以在redis系统中通过如下命令进行查看:
help @类型名
例如:在redis的控制台中,输入help @string,就可以查看redis针对string类型的操作,如下图所示:
二.Redis的针对KEY的操作
命 令 | 描述 |
Type | 查询key的类型 |
PEXPIREAT | 设置 key 的过期时间,以毫秒计算,key 过期后将不再可用。 |
Rename | 用于修改 key 的名称 |
Persist | 用于移除给定 key 的过期时间,使得 key 永不过期 |
Move | 用于将当前数据库的 key 移动到给定的数据库 db 当中 |
RANDOMKEY | 从当前数据库中随机返回一个 key |
DUMP | 用于序列化给定 key ,并返回被序列化的值 |
TTL | 以秒为单位返回 key 的剩余过期时间 |
EXIPRE | 用于设置 key 的过期时间。key 过期后将不再可用 |
DEL | 用于删除已存在的键。不存在的 key 会被忽略 |
PTTL | 以毫秒为单位返回 key 的剩余过期时间 |
Renamenx | 用于在新的 key 不存在时修改 key 的名称 |
EXISTS | 用于检查给定 key 是否存在 |
EXPIREAT | 用于以 UNIX 时间戳(unix timestamp)格式设置 key 的过期时间。key 过期后将不再可用 |
注意事项:
在redis中,对key的命令不区分大小写,但value的数值是区分大小写的。
三.Redis的String类型常用操作
-
字符的操作
命令 | 描述 |
SET key value[NX|XX] | 设置某个key的值是value,可选参数NX表示不存在的时候才设置,XX表示key存在的时候,才能修改key的值 |
MSET/MGET K1 K2 ... | 表示可以取出多个k1,k2....的值,该操作是原子性的,只要一个key出现问题,该操作就会失败 |
getrange key start end | 其中start,end表示key对应的value中想取出的序列索引号 |
Setrange key offset value | 它会将key对应值从offset的序列号开始替换成设置的value数值 |
APPEND key value | 它表示会在key对应的值后面添加value |
STRLEN key | 返回key对应的值的长度 |
-
数值的操作
命令 | 描述 |
INCR key | key对应的值增加1 |
INCRBY key value | key对应的值增加value |
DECR key | key对应的值减少1 |
DECRBY key value | key对应的值减少value |
INCRBYFLOAT key float | key对应的值增加float数 |
注意事项:
在redis中,是采用了字节流进行数据传输,保证了数据的二进制安全,这样可以减少因为客户端和服务端两者之间的编码规则不一致,造成字符出现截断现象
四.Redis的BitMap类型的操作
命令 | 描述 |
BITPOS key bit start end | 返回的是key对应的值中从指定的字节序列start到end序列之间第一个出现数值为bit的序列号 |
BITCOUNT key start end | 统计key对应的值从序列号start到end之间1出现的个数 |
SETBIT key offset value | 针对key对应值二进制表示中序列号为offset上的二进制数值设置成value(value只能为0或1) |
BITOP operation destkey key1 key2 | 表示针对key1和key2,按位与、按位或、按位非(它由operation来确定,也就是operagion只能为and、or等三个值),并把结果存储到destkey之中 |
五.Redis的String类型及BitMap实际运用场景
-
有用户系统,需要统计用户登录天数且窗口随机
-
在进行当天登录送礼物活动的时候,系统需要确定备货的数量,假设该系统中有2亿的用户
总结
都可以通过bitmap来实现,比传统的用mysql数据库来实现所带来的成本小的多
六.在实际应用Redis中遇到的问题
- 问题:在当前控制台中执行source /etc/profile 进行环境变量的读取的时候,在当前窗口有效,但关闭再另起一个terminal之后,就失效
解决方案:
这是因为在每次启动terminal之后,centos都会执行.bashrc中的配置命令,因此,只需要将source /etc/profile 添加至~/.bashrc之中即可