一、简介

【概述】

  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..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)的更多相关文章

  1. redis日常操作

    redis针对所有类型的日常操作: keys * ## 取出所有key keys my* ## 模糊匹配 exists name ## 存在name键返回1,否则返回0 del key1 ## 删除一 ...

  2. Redis Cluster日常操作命令梳理

    在之前的一篇文章已经介绍了Redis Cluster及其部署,下面说下Redis Cluster日常操作命令: 一.以下命令是Redis Cluster集群所独有的,执行下面命令需要先登录redis: ...

  3. redis的一些操作

    public class WnsRedisFactory { private static Cache pool = null; private static JedisConnectionFacto ...

  4. python之redis和memcache操作

    Redis 教程 Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理.Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据 ...

  5. redis的hash操作在集中式session中的应用

    在集群部署时,为了高可用性的目的,往往把session进行共享,共享分为两种:session复制和集中式管理. redis在session集中式管理中可以起到比较大的作用. 制约session集中式共 ...

  6. Redis客户端API操作 Jedis详解

    redis是一个著名的key-value存储系统,也是nosql中的最常见的一种.其实,个人认为,redis最强大的地方不在于其存储,而在于其强大的缓存作用. 我们可以把它想象成一个巨大的(多借点集群 ...

  7. Spring Boot 整合 Redis 实现缓存操作

    摘要: 原创出处 www.bysocket.com 「泥瓦匠BYSocket 」欢迎转载,保留摘要,谢谢!   『 产品没有价值,开发团队再优秀也无济于事 – <启示录> 』   本文提纲 ...

  8. LINUX日常操作二

    参见:Linux日常操作一  selinux 开启和关闭 一.查看SELinux状态:1./usr/sbin/sestatus -v      ##如果SELinux status参数为enabled ...

  9. 缓存数据库-redis数据类型和操作(list)

    转: 狼来的日子里! 奋发博取 缓存数据库-redis数据类型和操作(list) 一:Redis 列表(List) Redis列表是简单的字符串列表,按照插入顺序排序.你可以添加一个元素导列表的头部( ...

随机推荐

  1. 海康RTSP取流URL格式

    预览取流url [海康威视]举例说明: 主码流取流: rtsp://admin:12345@192.0.0.64:554/h264/ch1/main/av_stream 子码流取流: rtsp://a ...

  2. Typescript玩转设计模式 之 创建型模式

    作者简介 joey 蚂蚁金服·数据体验技术团队 前言 我们团队的工作是用单页面应用的方式实现web工具.涉及到数万到十数万行的前端代码的管理,而且项目周期长达数年. 怎么样很好地管理好这种量级的前端代 ...

  3. HDU-1358-Period(KMP, 循环节)

    链接: https://vjudge.net/problem/HDU-1358#author=0 题意: For each prefix of a given string S with N char ...

  4. @SpringQueryMap注解 feign的get传参方式(转)

    spring cloud项目使用feign的时候都会发现一个问题,就是get方式无法解析对象参数.其实feign是支持对象传递的,但是得是Map形式,而且不能为空,与spring在机制上不兼容,因此无 ...

  5. 部署LVS-DR集群

    设置Proxy代理服务器的VIP和DIP [root@proxy ~]# cd /etc/sysconfig/network-scripts [root@proxy network-scripts]# ...

  6. Ubuntu 保存文件时报E212

    命令输入: vim test/conf.conf 出现如下报错:  步骤一: 没有足够的权限!使用如下代码尝试: :w !sudo tee % > /dev/null 如果步骤一没有解决问题,尝 ...

  7. JVM(三),JVM如何加载.class文件

    三.JVM如何加载.class文件 1.Java虚拟机的四个部分 2.通过类加载器(ClassLoader)加载.class

  8. 路由器与交换机配置——交换机默认网关(实现跨网段telnet)

    一.实验目的:配置一台交换机,并配置默认网关,使不同网段的主机能够远程telnet登录连接到交换机 二.实验拓扑图如下: 二.实验步骤: 1.首先给PC1主机配置ip地址和网关(gateway) -- ...

  9. TTTTTTTTTTTTT CDOJ 1136 邱老师玩游戏 树形dp

    邱老师玩游戏 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit St ...

  10. 32位linux安装chrome浏览器

    首先你需要一个安装包,可以在CSDN上搜索google-chrome-stable_current_i386.deb. 然后在终端输入 sudo apt-get install gdebi 然后找到安 ...