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列表是简单的字符串列表,按照插入顺序排序.你可以添加一个元素导列表的头部( ...
随机推荐
- gulp connect.static is not a function
npm install --save serve-static var serveStatic = require('serve-static');
- jsfuck-原理
jsfuck真的fuck,第一眼就是WTF?? Example The following source will do an alert(1): [][(![]+[])[+[]]+([![]]+[] ...
- axios 请求多个接口
axios.all([ axios.get('https://api.github.com/xxx/1'), axios.get('https://api.github.com/xxx/2') ]) ...
- 题解 【NOIP2014】解方程
题面 解析 这题的数据看起来似乎特别吓人... 但实际上, 这题非常好想. 只需要模一个大质数就行了(我模的是1e9+7)(实测有效) 另外,a要用快读读入,再一边模Mod(因为实在太大了). 然后, ...
- Python之hashlib模块的使用
hashlib模块主要的作用: 加密保护消息安全,常用的加密算法如MD5,SHA1等. 1.查看可用的算法有哪些 #!/usr/bin/env python # -*- coding: utf-8 - ...
- React-native 触摸事件
http://www.360doc.com/content/16/0711/23/34978982_574835465.shtml
- delphi请求http接口中文乱码问题
请求http接口的时候参数值是中文乱码: http接口一般都是由java,php以及C#开发而成的,乱码的原因也是由于编码的问题,一般传递数据的都是utf8,然后传递的时候都会urlEcode 那么d ...
- 顺序表应用3:元素位置互换之移位算法(SDUT 3326)
题解:用一个for,循环m次,每次都把最前面的放到最后面,就可以了. #include <stdio.h> #include <stdlib.h> #include <s ...
- AcWing:142. 前缀统计(字典树)
给定N个字符串S1,S2…SNS1,S2…SN,接下来进行M次询问,每次询问给定一个字符串T,求S1S1-SNSN中有多少个字符串是T的前缀. 输入字符串的总长度不超过106106,仅包含小写字母. ...
- 微信小程序_(表单组件)checkbox与label
微信小程序组件checkbox官方文档 传送门 微信小程序组件label官方文档 传送门 Learn 一.checkbox组件 二.label组件与checkbox组件共用 一.checkbox组件 ...