redis的日常操作
Posted daisyyang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis的日常操作相关的知识,希望对你有一定的参考价值。
一、简介
【概述】
redis
是一种nosql
数据库,他的数据是保存在内存中,同时redis
可以定时把内存数据同步到磁盘,即可以将数据持久化,并且他比memcached
支持更多的数据结构(string
,list列表[队列和栈]
,set[集合]
,sorted set[有序集合]
,hash(hash表)
)。相关参考文档:http://redisdoc.com/index.html
【使用场景】
- 登录会话存储:存储在
redis
中,与memcached
相比,数据不会丢失。 - 排行版/计数器:比如一些秀场类的项目,经常会有一些前多少名的主播排名。还有一些文章阅读量的技术,或者新浪微博的点赞数等。
- 作为消息队列:比如
celery
就是使用redis
作为中间人。 - 当前在线人数:还是之前的秀场例子,会显示当前系统有多少在线人数。
- 一些常用的数据缓存:比如我们的
BBS
论坛,板块不会经常变化的,但是每次访问首页都要从mysql
中获取,可以在redis
中缓存起来,不用每次请求数据库。 - 把前200篇文章缓存或者评论缓存:一般用户浏览网站,只会浏览前面一部分文章或者评论,那么可以把前面200篇文章和对应的评论缓存起来。用户访问超过的,就访问数据库,并且以后文章超过200篇,则把之前的文章删除。
- 好友关系:微博的好友关系使用
redis
实现。 - 发布和订阅功能:可以用来做聊天软件。
二、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的日常操作的主要内容,如果未能解决你的问题,请参考以下文章