redis的日常操作

Posted daisyyang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis的日常操作相关的知识,希望对你有一定的参考价值。

一、简介

【概述】

  redis是一种nosql数据库,他的数据是保存在内存中,同时redis可以定时把内存数据同步到磁盘,即可以将数据持久化,并且他比memcached支持更多的数据结构(string,list列表[队列和栈],set[集合],sorted set[有序集合],hash(hash表))。相关参考文档:http://redisdoc.com/index.html

【使用场景】

  1. 登录会话存储:存储在redis中,与memcached相比,数据不会丢失。
  2. 排行版/计数器:比如一些秀场类的项目,经常会有一些前多少名的主播排名。还有一些文章阅读量的技术,或者新浪微博的点赞数等。
  3. 作为消息队列:比如celery就是使用redis作为中间人。
  4. 当前在线人数:还是之前的秀场例子,会显示当前系统有多少在线人数。
  5. 一些常用的数据缓存:比如我们的BBS论坛,板块不会经常变化的,但是每次访问首页都要从mysql中获取,可以在redis中缓存起来,不用每次请求数据库。
  6. 把前200篇文章缓存或者评论缓存:一般用户浏览网站,只会浏览前面一部分文章或者评论,那么可以把前面200篇文章和对应的评论缓存起来。用户访问超过的,就访问数据库,并且以后文章超过200篇,则把之前的文章删除。
  7. 好友关系:微博的好友关系使用redis实现。
  8. 发布和订阅功能:可以用来做聊天软件。

二、redis日常操作命令

【安装】

编译安装  :

安装前要打开httpd(80端口)
wget http://download.redis.io/releases/redis-5.0.0.tar.gz tar -zxvf redis-5.0.0.tar.gz yum install gcc #编译安装 yum install gcc-c++ make #编译的时候要cd redis-5.0.0 && make && make install cp src/redis-server /usr/bin/ cp src/redis-cli /usr/bin/
启动:加&后台运行,不加退出就停止运行了。所以要后台运行
redis-server &
查看服务是否开启
ps -ef | grep redis
退出
kill -9 进程

yum安装

安装
yum install -y redis
重启
systemctl restart redis

【连接】

redis-cli -p 6379 -h 127.0.0.1
6379是redis服务的端口

【添加】

技术图片
【字符串】:创建时如果不存在直接创建,存在就覆盖旧值;设置过期时间,默认时间永久;时间到了数据自动消失
192.168.42.7:6379> set username jamhsiao
OK
192.168.42.7:6379> set username haha
OK
192.168.42.7:6379> get username
"haha" 
192.168.42.7:6379> del username
(integer) 1
192.168.42.7:6379> get username
(nil)
192.168.42.7:6379> set username janhsiao ex 19
OK
192.168.42.7:6379> ttl username   查看过期时间
(integer) 8
192.168.42.7:6379> ttl username
(integer) 0
192.168.42.7:6379> keys *     查看所有的关键字
1) "name"
2) "music"
字符串
技术图片
【列表】可重复,有序,可以多个添加。添加是如果key不存在,就直接创建;如果存在且不是列表类型,将返回一个错误。
192.168.42.7:6379> lpush book love    
(integer) 1
192.168.42.7:6379> lpush book love phy keben
(integer) 4
192.168.42.7:6379> lrange book 0 -1  #0表示头,-1表示尾
1) "keben"
2) "phy"
3) "love"
4) "love"
192.168.42.7:6379> rpush name xiao    与字符串重名,返回错误
(error) WRONGTYPE Operation against a key holding the wrong kind of value
192.168.42.7:6379> lpop book     取头元素
"keben"
192.168.42.7:6379> rpop book     取尾元素,取出列表中就不存在
"love"
192.168.42.7:6379> lindex book 0    下标取值,列表元素依旧存在
"phy"
192.168.42.7:6379> llen book       
(integer) 2
192.168.42.7:6379> lrem book 0 phy    删除phy
(integer) 1
192.168.42.7:6379> lrem key count value    
count > 0:从表头开始向表尾搜索,移除与value相等的元素,数量为count。
count < 0:从表尾开始向表头搜索,移除与 value相等的元素,数量为count的绝对值。
count = 0:移除表中所有与value 相等的值。
列表
技术图片
【集合】不能重复,无序,可多个添加
192.168.42.7:6379> sadd user jam hsiao daisy tony tom cat 
(integer) 6
192.168.42.7:6379> smembers user
1) "jam"
2) "daisy"
3) "hsiao"
4) "tony"
5) "cat"
6) "tom"
192.168.42.7:6379> srem user tony   删除
(integer) 1
192.168.42.7:6379> scard user    查看个数
(integer) 5
192.168.42.7:6379> sadd username jamhsiao jam tenggege xiao jing teng daisy
(integer) 7
192.168.42.7:6379> sinter user username   交集
1) "daisy"
2) "jam"
192.168.42.7:6379> sunion user username   并集
 1) "cat"
 2) "tom"
 3) "jam"
 4) "daisy"
 5) "hsiao"
 6) "jing"
 7) "jamhsiao"
 8) "xiao"
 9) "tenggege"
10) "teng"
192.168.42.7:6379> sdiff user username   差集,以左边为准
1) "tom"
2) "cat"
3) "hsiao"
192.168.42.7:6379> sdiff username user
1) "xiao"
2) "jamhsiao"
3) "jing"
4) "tenggege"
5) "teng"
集合
技术图片
【哈希表】key值可以重复,feild不可重复,相当于字典里包含字典
192.168.42.7:6379> hset classes student jam
(integer) 1
192.168.42.7:6379> hset classes student hsiao
(integer) 0
192.168.42.7:6379> hset classes students hsiao
(integer) 1
192.168.42.7:6379> hget classes student 
"hsiao"
192.168.42.7:6379> hdel classes student 
(integer) 1
192.168.42.7:6379> hgetall classes  查看所有,以字典的形式列出
1) "students"
2) "hsiao"
192.168.42.7:6379> hset classes s jam
(integer) 1
192.168.42.7:6379> hset classes st jam
(integer) 1
192.168.42.7:6379> hset classes stu jam
(integer) 1
192.168.42.7:6379> hset classes stud jam
(integer) 1
192.168.42.7:6379> hset classes stude jam
(integer) 1
192.168.42.7:6379> hgetall classes
 1) "students"
 2) "hsiao"
 3) "s"
 4) "jam"
 5) "st"
 6) "jam"
 7) "stu"
 8) "jam"
 9) "stud"
10) "jam"
11) "stude"
12) "jam"
192.168.42.7:6379> hkeys classes
1) "students"
2) "s"
3) "st"
4) "stu"
5) "stud"
6) "stude"
192.168.42.7:6379> hvals classes
1) "hsiao"
2) "jam"
3) "jam"
4) "jam"
5) "jam"
6) "jam"
192.168.42.7:6379> hlen classes
(integer) 6
192.168.42.7:6379> hdel classes stu 
(integer) 1
192.168.42.7:6379> hexists classes student   
(integer) 0
192.168.42.7:6379> hexists classes stud
(integer) 1
哈希表
技术图片
【事务】
开始事务 : multi
执行事务 : exec
回滚事务 : discard
事务

以上是关于redis的日常操作的主要内容,如果未能解决你的问题,请参考以下文章

译文:18个实用的JavaScript代码片段,助你快速处理日常编程任务

Redis日常运维-常用命令汇总

Redis数据库的日常使用

前端面试题之手写promise

jedis连接redis

使用java jedis封装Redis Stream操作案例