zoukankan      html  css  js  c++  java
  • redis的日常操作(1)

    一、简介

    【概述】

      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 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 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
    事务
  • 相关阅读:
    [Outlook] Outlook2013能收但无法发送邮件-0x800CCC13, 0x800CCC0B, 0x8004210B
    [Mobile] 手机浏览器输入框-数字输入框
    [Qcon] 百姓网开发总结
    [QCon] Scrum阅读随想
    [Spring] 事务级别定义
    [Monitor] 监控规则定义
    [Spring Batch] 图解Spring Batch原理
    [JavaCore] 微信手机浏览器版本判断
    Python 编码简单说
    矩阵或多维数组两种常用实现方法
  • 原文地址:https://www.cnblogs.com/daisyyang/p/10874129.html
Copyright © 2011-2022 走看看