redis的日常操作(1)
一、简介
【概述】
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..tar.gz
yum install gcc #编译安装
yum install gcc-c++
make #编译的时候要cd redis-5.0.0 && make PREFIX=/usr/local/redis && make install
mkdir /usr/local/redis5/etc/
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
配置文件
/etc/redis.conf
【连接】
redis-cli -p -h 127.0.0.1
6379是redis服务的端口
【添加】
【字符串】:创建时如果不存在直接创建,存在就覆盖旧值;设置过期时间,默认时间永久;时间到了数据自动消失
192.168.42.7:> set username jamhsiao
OK
192.168.42.7:> set username haha
OK
192.168.42.7:> get username
"haha"
192.168.42.7:> del username
(integer)
192.168.42.7:> get username
(nil)
192.168.42.7:> set username janhsiao ex
OK
192.168.42.7:> ttl username 查看过期时间
(integer)
192.168.42.7:> ttl username
(integer)
192.168.42.7:> keys * 查看所有的关键字
) "name"
) "music"
字符串
【列表】可重复,有序,可以多个添加。添加是如果key不存在,就直接创建;如果存在且不是列表类型,将返回一个错误。
192.168.42.7:> lpush book love
(integer)
192.168.42.7:> lpush book love phy keben
(integer)
192.168.42.7:> lrange book - #0表示头,-1表示尾
) "keben"
) "phy"
) "love"
) "love"
192.168.42.7:> rpush name xiao 与字符串重名,返回错误
(error) WRONGTYPE Operation against a key holding the wrong kind of value
192.168.42.7:> lpop book 取头元素
"keben"
192.168.42.7:> rpop book 取尾元素,取出列表中就不存在
"love"
192.168.42.7:> lindex book 下标取值,列表元素依旧存在
"phy"
192.168.42.7:> llen book
(integer)
192.168.42.7:> lrem book phy 删除phy
(integer)
192.168.42.7:> lrem key count value
count > :从表头开始向表尾搜索,移除与value相等的元素,数量为count。
count < :从表尾开始向表头搜索,移除与 value相等的元素,数量为count的绝对值。
count = :移除表中所有与value 相等的值。
列表
【集合】不能重复,无序,可多个添加
192.168.42.7:> sadd user jam hsiao daisy tony tom cat
(integer)
192.168.42.7:> smembers user
) "jam"
) "daisy"
) "hsiao"
) "tony"
) "cat"
) "tom"
192.168.42.7:> srem user tony 删除
(integer)
192.168.42.7:> scard user 查看个数
(integer)
192.168.42.7:> sadd username jamhsiao jam tenggege xiao jing teng daisy
(integer)
192.168.42.7:> sinter user username 交集
) "daisy"
) "jam"
192.168.42.7:> sunion user username 并集
) "cat"
) "tom"
) "jam"
) "daisy"
) "hsiao"
) "jing"
) "jamhsiao"
) "xiao"
) "tenggege"
) "teng"
192.168.42.7:> sdiff user username 差集,以左边为准
) "tom"
) "cat"
) "hsiao"
192.168.42.7:> sdiff username user
) "xiao"
) "jamhsiao"
) "jing"
) "tenggege"
) "teng"
集合
【哈希表】key值可以重复,feild不可重复,相当于字典里包含字典
192.168.42.7:> hset classes student jam
(integer)
192.168.42.7:> hset classes student hsiao
(integer)
192.168.42.7:> hset classes students hsiao
(integer)
192.168.42.7:> hget classes student
"hsiao"
192.168.42.7:> hdel classes student
(integer)
192.168.42.7:> hgetall classes 查看所有,以字典的形式列出
) "students"
) "hsiao"
192.168.42.7:> hset classes s jam
(integer)
192.168.42.7:> hset classes st jam
(integer)
192.168.42.7:> hset classes stu jam
(integer)
192.168.42.7:> hset classes stud jam
(integer)
192.168.42.7:> hset classes stude jam
(integer)
192.168.42.7:> hgetall classes
) "students"
) "hsiao"
) "s"
) "jam"
) "st"
) "jam"
) "stu"
) "jam"
) "stud"
) "jam"
) "stude"
) "jam"
192.168.42.7:> hkeys classes
) "students"
) "s"
) "st"
) "stu"
) "stud"
) "stude"
192.168.42.7:> hvals classes
) "hsiao"
) "jam"
) "jam"
) "jam"
) "jam"
) "jam"
192.168.42.7:> hlen classes
(integer)
192.168.42.7:> hdel classes stu
(integer)
192.168.42.7:> hexists classes student
(integer)
192.168.42.7:> hexists classes stud
(integer)
哈希表
【事务】
开始事务 : multi
执行事务 : exec
回滚事务 : discard
事务
redis的日常操作(1)的更多相关文章
- redis日常操作
redis针对所有类型的日常操作: keys * ## 取出所有key keys my* ## 模糊匹配 exists name ## 存在name键返回1,否则返回0 del key1 ## 删除一 ...
- Redis Cluster日常操作命令梳理
在之前的一篇文章已经介绍了Redis Cluster及其部署,下面说下Redis Cluster日常操作命令: 一.以下命令是Redis Cluster集群所独有的,执行下面命令需要先登录redis: ...
- redis的一些操作
public class WnsRedisFactory { private static Cache pool = null; private static JedisConnectionFacto ...
- python之redis和memcache操作
Redis 教程 Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理.Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据 ...
- redis的hash操作在集中式session中的应用
在集群部署时,为了高可用性的目的,往往把session进行共享,共享分为两种:session复制和集中式管理. redis在session集中式管理中可以起到比较大的作用. 制约session集中式共 ...
- Redis客户端API操作 Jedis详解
redis是一个著名的key-value存储系统,也是nosql中的最常见的一种.其实,个人认为,redis最强大的地方不在于其存储,而在于其强大的缓存作用. 我们可以把它想象成一个巨大的(多借点集群 ...
- Spring Boot 整合 Redis 实现缓存操作
摘要: 原创出处 www.bysocket.com 「泥瓦匠BYSocket 」欢迎转载,保留摘要,谢谢! 『 产品没有价值,开发团队再优秀也无济于事 – <启示录> 』 本文提纲 ...
- LINUX日常操作二
参见:Linux日常操作一 selinux 开启和关闭 一.查看SELinux状态:1./usr/sbin/sestatus -v ##如果SELinux status参数为enabled ...
- 缓存数据库-redis数据类型和操作(list)
转: 狼来的日子里! 奋发博取 缓存数据库-redis数据类型和操作(list) 一:Redis 列表(List) Redis列表是简单的字符串列表,按照插入顺序排序.你可以添加一个元素导列表的头部( ...
随机推荐
- 基于VS2017C++的窗口编写
自从转专业学习计算机后就想写一个简单的有点意义的东西,没有真正接触计算机之前,一直觉得写一个界面什么的很简单.但是现在我都快学了接近一年了才正式自己学习一节界面开发.我想哭-- 我现在学习的是C++窗 ...
- Trie树(代码),后缀树(代码)
Trie树系列 Trie字典树 压缩的Trie 后缀树Suffix tree 后缀树--ukkonen算法 Trie是通过对字符串进行预先处理,达到加快搜索速度的算法.即把文本中的字符串转换为树结构, ...
- Ubuntu各个版本下载
官网:https://www.ubuntu.com/download/desktop 没找到历史版本,且下载速度很慢 在网易镜像站下载ubuntu: 网址:http://mirrors.163.com ...
- Oracle修改表,提示“资源正忙,要求指定NOWAIT”
今天往一个表里面多增加了两个字段,修改完毕,保存的时候,提示如下内容:“资源正忙,要求指定nowait”.重试好几遍,都没有解决,于是搜索了一下,找到了解决方法,如下: 首先执行下面一段代码,得到锁定 ...
- Acwing-285-没有上司的舞会(树型DP)
链接: https://www.acwing.com/problem/content/287/ 题意: Ural大学有N名职员,编号为1~N. 他们的关系就像一棵以校长为根的树,父节点就是子节点的直接 ...
- ESlint配置案例及如何配置
1.中文官网: https://eslint.cn/ 2.先看一个写好的eslint规则: 3.下面再给一个例子 module.exports = { "parser": &quo ...
- call和ret指令
call和ret都是用来修改ip或cs:ip,可以用来实现子程序的设计: 1.ret和retf ret ->修改ip的内容,从而实现近转移: retf ->同时修改cs和i ...
- P4981 父子 Cayley公式
CayleyCayley公式的定义是这样的,对于n个不同的节点,能够组成的无根树(原来是无向连通图或者是有标志节点的树)的种数是n^(n-2)种.(这里让大家好理解一点,就写成了无根树,其实应该是一样 ...
- jQuery文档操作之删除操作
remove() 语法: $(selector).remove(); 解释:删除节点后,事件也会删除(简言之,删除了整个标签) $("ul").remove(); detach() ...
- js基础( js嵌入方式、输出语句)
s现在的作用 1.验证表单(以前的网速慢) 2.页面特效 (PC端的网页效果) 3.移动端 (移动 web 和app) 4.异步和服务器交互(ajax) 5.服务器端开发 (nodejs) ...