zoukankan      html  css  js  c++  java
  • redis基本操作

    1. 什么是Redis

    Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。Redis全称为:Remote Dictionary Server,该软件使用C语言编写,Redis是一个key-value存储系统,它支持丰富的数据类型,如:string、list、set、zset(sorted set)、hash。
    
    Redis特点:
    Redis以内存作为数据存储介质,所以读写数据的效率极高,远远超过数据库。
    
    Redis应用场景:
    因为Redis交换数据快,所以在服务器中常用来存储一些需要频繁调取的数据,这样可以大大节省系统直接读取磁盘来获得数据的I/O开销,更重要的是可以极大提升速度。
    将这种热点数据存到Redis(内存)中,要用的时候,直接从内存取,极大的提高了速度和节约了服务器的开销。

    进入redis

    redis-cli
    #不能进入,就安装:
    sudo apt-get update
    sudo apt-get install redis-server

    redis五种数据类型、及操作

    • string 字符串

    • list 列表

    • hash 哈希

    • set 集合

    • sorted sets 有序集合

    key 有5中数据类型:string、list、set、zset(sorted set)、hash。

    value :都是字符串类型的

    string

    #设置
    set key value     例:   ( set name 'jianeng' )
    #  获取
    get key           例:   ( get name   )
    # key是唯一的,不能用同一个key 不然就会覆盖

    查看过期时间

    # -1 表示永久     -2 表示 不存在
    ttl key          例:    ( ttl name )

    设置过期时间

    # 给已经存在 key,设置过期时间
    expire key seconds   例:  ( expire name 20  )
    
    # 设置 key的同时,设置过期时间
    set key value ex seconds   例: ( set age 18 ex 20 )
    或
    setex key seconds value    例: ( setex sex 20 '' )

    追加

    # 给已有的value,再添加新的值
    # append key value
    例
    append name  love
    #get name
    
    redis 里面所有的 value。 都是字符串类型的

    设置 / 获取 多个

    #设置多个 string
    mset key value  key value..
    例子
    mset username 'jianeng'  password  '123'
    
    #获取多个
    mget key key key ...
    例
    mget username password name 

    key 操作

    # 查看所有的key
     keys *
     keys n*
    
     
    # 删除
     del key        例:    (del name)
     
    # 查看key是否存在  ,存在返回 1, 不存在返回 0
     exists key 
    
    # 查看key类型
     type key

    运算

    set num 1    # 自动识别,字符串里面的 整数
    # +1
    incr key        例 (incr num)
    # -1
    decr key        例 (decr num)
    
    # +整数
    incrby key increment              例 (incrby num 50)
    
    # -整数
    decrby key increment              例 (decrby num 50)

    list

    设置

    #lpush  左添加  (栈)
    lpush  key  value     #例  lpush my_list a b c d
    
    #rpush  右添加   (队列)
    rpush  key  value     #例  rpush my_rlist a b c d

    查看

    # lrange  key  start  stop
    例  查看所有
    lrange my_list 0 -1

    获得list的元素个数

    lindex key  index    #例 lindex my_list  3

    删除

    lpop 删除左边第一个

    lpop key        #例 lpop  my_rlist

    rpop 删除右边第一个

    rpop key        #例 rpop  my_list

    lrem 删除指定

    rpush  test_list  a a b b c d e a d f m c
    #lrem  key count  value
    
    #count > 0 从左往右 删除数量为count的value
    例 : lrem test_list 2 a
    
    #count = 0 删除所有的 value
    例 : lrem test_list 0 a
    
    #count < 0 从右往左 删除数量为count的value
    例 : lrem test_list -1 b

    hash

    设置

    #  hset key field value
    例  user { name:jianeng}
    hset user name jianeng

    获取

    #  hget key field
    例
    hget user name

    删除

    #  hdel key field
    例
    hdel user name

    设置多个

    #hmset key field value [field value]
    例  user{name:jianeng , age:18, sex:male }
    hmset user name jianeng age 18 sex male
    

    获取多个

    # hmget key field field
    例
    hmget user name age

    获取全部field value

    # hgetall key 
    例     itmes
    hgetall user

    获取所有的field

    # hkeys key
    例      keys
    hkeys user

    获取所有的value

    # hvals key 
    例     values  
    hvals user

    获取field的个数

    # hlen key
    例    
    hlen user

    set 集合

    设置

    # sadd key value [value]    (唯一,无序)
    例
    sadd my_set m n b v c x z b

    获取

    # smembers key
    例
    smembers my_set

    删除

    srem指定删除

    # srem key member
    例
    srem my_set c

    spop随机删除

    # spop  key
    例
    spop my_set

    移动一个集合的值到另一个集合

    # smove oldkey newkey member
    例
    smove my_set my_set2 z

    判断集合存在某个值

    # sismember key value
    例
    sismember my_set2 b   

    交集

    # sinter key1 key2 ..
    例
    sinter my_set my_set2

    把 key1 key2的交集合并到newkey

    # sinterstore newkey key1 key2
    例
    sinterstore  new_set my_set my_set2

    并集

    # sunion key1 key2 ...
    例
    sunion my_set my_set2

    把 key1 key2的并集合并到newkey

    # sunionstore newkey key1 key2
    例
    sunionstore new_set2 my_set my_set2

    差集

    # sdiff key1 key2
    sdiff my_set my_set2

    把 key1 key2的差集合并到newkey

    # sdiffstore newkey key1 key2
    例
    sdiffstore new_set3 my_set my_set2

    获取集合个数

    # scard key
    例
    scard my_set

    随机返回一个

    # srandmember key
    例
    srandmember my_set

    zset

    设置

    # zadd key score member
    例
    zadd  my_zset 1 'one'
    zadd  my_zset 2 'two'
    zadd  my_zset 3 'three'
    zadd  my_zset 4 'four'
    zadd  my_zset 5 'five'

    获取

    • zrange正序

    #zrange key start stop    (withscores)
    zrange my_zset 0 -1  withscores
    • zrevrange倒序
    #zrevrange key start stop
    zrevrange my_zset 0 -1  withscores

    删除

    #zrem key member
    zrem my_zset two

    索引

    • zrank正序

    # zrank key member
    例
    zrank my_zset three
    • zrevrank反序
    # zrevrank key member
    例
    zrevrank my_zset three

    zcard 查看有序集合元素数

    # zcard key
    例
    zcard my_zset

    zrangebyscore 返回集合中 score 在给定区间的元素

    # zrange my_zset 0 -1 withscores
    
     zrangebyscore my_zset 2 3 withscores
    #返回了 score 在 2~3 区间的元素

    zcount 返回集合中 score 在给定区间的数量

    # zcount key min max
    例
    zcount my_zset 2 3

    zscore : 查看score值

    # zscore key member
    例
    zscore my_zset two

    zremrangebyrank : 删除集合中排名在给定区间的元素(正向)

    # zrange my_zset 0 -1 withscores
    zremrangebyrank my_zset 1 3

    zremrangebyscore : 删除集合中 score 在给定区间的元素

    # zrange my_zset 0 -1 withscores
    zremrangebyscore my_zset 3 5

    Redis发布和订阅

    #发布 
    publish 频道 消息
    
    
    # 订阅
    subscribe 频道

     redis修改密码

    1. 先找到配置文件 
    cd /etc/redis 
    2. 修改redis.conf
    sudo vim redis.conf
    2.1 找到 requirepass --> 正常来说应该是在你的第396行 
    /requirepass --> vim 查找字符串
    # requirepass foobared 
    2.2 只需要更改 foobared 去掉注释
    requirepass 自己定义的密码
    2.3 保存退出
    :wq
    3. 重启服务
    sudo service redis-server restart
    4. reids-cli -- 先进去
    auth 自己密码
    
    5. 如果是中文的话 reids-cli --raw 
    一般来说 用的不是很多 因为我们更多的是通过python操作 用户是不会看我们数据库的 而是通过页面来看数据
    

      

  • 相关阅读:
    linux系统编程之(一) 信号量
    linux 工具(1)------终端提示符配置
    网络那点事之socket队列
    磨刀砍柴
    线程的分离链接属性
    error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h"”?
    mkdir和_mkdir的区别
    错误 1 error C4996: 'getcwd': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _getcwd. See online help for details.
    error C4996: 'getcwd': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _getcwd. See online help for details. c:users12968desktop estapp estapp estapp.c
    .net与C#
  • 原文地址:https://www.cnblogs.com/woaixuexi9999/p/9220957.html
Copyright © 2011-2022 走看看