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 --raw

redis五种数据类型、及操作 (针对key) ,value都是字符串

  • string 字符串

  • list 列表

  • hash 哈希

  • set 集合

  • sorted sets 有序集合

string

#设置
set key value       例子:set test "Just do a test!"
# 获取
get key             例子:get test
# key是唯一的,不能用同一个key 不然就会覆盖

查看过期时间

# -1 表示永久     -2 表示 不存在
ttl key             例子:ttl test

设置过期时间

# 给已经存在 key,设置过期时间
expire key seconds   例子:expire test 12

# 设置 key的同时,设置过期时间
set key value ex seconds 例子:set test1 "ABC" ex 8

追加

# 给已有的value,再添加新的值
append key value           例子:append test1 "123"

设置 / 获取 多个

#设置多个 string
mset key value key value..     例子:mset a1 "AAA111" b2 "BBBA222"

#获取多个 string
mget key key key ...       例子:mget a1 b2

key 操作 (针对所有的 key)

# 查看所有的key
keys *           例子: keys *

# 删除
del key   例子:del b1 # 查看key是否存在 ,存在返回 1, 不存在返回 0
exists key     例子: exists b1

# 查看key类型
type key           例子:type a1
运算
set num 1    # 自动识别,字符串里面的 整数 例子:
# +1
incr key       例 (incr num)   例子:set c3 12345
                                  incr c3
# -1
decr key       例 (decr num)   例子:decr c3

# +整数
incrby key increment             例 (incrby num 50) 例子:incrby c3 6

# -整数
decrby key increment             例 (decrby num 50)   例子:decrby c3 6

list

  • 设置

    # lpush  左添加  (栈), 后面来的 放第一个
    lpush key value     例子: lpush l1 "abc"

    #rpush 右添加   (队列) 后面来的 放最后一个
    rpush key value     例子: rpush l1 "123"
  • 查看

    # lrange  key  start  stop  例子: lrange l1 0 -1
    例 查看所有
    lrange key 0 -1
  • 获得list的元素个数

    # llen key         例子:llen l1
  • 查看位于lidex 位置上的元素

    # lindex  key index    例子:lindex l1 0
  • 删除

    • lpop 删除左边第一个 (第一个)

      #rpush test2 d a b c u w y  a b c y a b t c w t
      lpop key       例子:lpop test2
  • rpop 删除右边第一个 (最后个)

    rpop key        例子:rpop test2
  • lrem 删除指定value 及 数量

    rpush test_list a b c w a b c a b c w
    # lrem key count value   例子:

    #count > 0 从左往右 删除数量为count的value   (从上往下)
    例 : lrem test_list 2 a   例子:lrem test 1 c

    #count = 0 删除所有的 value
    例 : lrem test_list 0 a   例子:lrem test2 0 c

    #count < 0 从右往左 删除数量为count的value   (从下往上)
    例 : lrem test_list -1 b   例子:lrange test2 -1 a

hash (类似与字典)

  • 设置

    #  hset key field value   例子:hset user name xlong
    例 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]   例子:hmset user1 name xlong age 26 sex nan
    例 user{name:jianeng , age:18, sex:male }
    hmset user name jianeng age 18 sex male
  • 获取多个

    # hmget key field field   例子:hget user1 name age sex

  • 获取全部field value (类似与字典里的 items)

    # hgetall key     例子:hgetall user1

    hgetall user

  • 获取所有的field (类似与字典里的 keys)

    # hkeys key   例子:hkeys user1

  • 获取所有的value (类似与字典里的 values)

    # hvals key   例子:hvals user1

  • 获取field的个数

    # hlen key     例子:hlen user1

set(集合)

  • 设置

    # sadd key value [value]    (唯一,无序)   例子:sadd tests1 q w e 1 2 3 
                                                    sadd tests2 w w w w 6 6 6 6(最终只有w 和6)
  • 获取

    # smembers key    例子:smembers tests1
  • 删除

    • srem指定删除

      # srem key member       例子:srem tests1 2
    • spop随机删除

      # spop  key            例子:spop tests1
  • 移动一个集合的值到另一个集合

    # smove oldkey newkey member    例子:smove tests1 tests2 3
  • 判断集合存在某个值

    # sismember key value             例子:sismember tests2 w
  • 交集

    # sinter key1 key2 ..           例子:sinter tests1 tests2

    把 key1 key2的交集合并到newkey

    # sinterstore newkey key1 key2         例子:sinterstore tests3 tests1 tests2
  • 并集

    # sunion key1 key2 ...         例子:sunion tests1 tests2

    把 key1 key2的并集合并到newkey

    # sunionstore newkey key1 key2         例子:sunionstore tests4 tests1 tests2
  • 差集

    # sdiff key1 key2          例子:sdiff tests1 tests2

    把 key1 key2的差集合并到newkey

    # sdiffstore newkey key1 key2        例子:sdiffstore tests5 tests1 tests2
  • 获取集合个数

    # scard key     例子:scard tests5
  • 随机返回一个

    # srandmember key        例子:srandmember tests4

zset(有序集合)

  • 设置

    # zadd key score member         例子: zadd testz1 1 a1a2a3
      zadd testz2 2 b1b2b3
      zadd testz3 3 c1c2c3

    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 testz1 0 -1
      zrange my_zset 0 -1  
    • zrevrange倒序

      #zrevrange key start stop         例子:zrevrange testz2 0 -1
      zrevrange my_zset 0 -1
  • 删除

    #zrem key member            例子:zrem testz1 a1a2a3
    zrem my_zset two
  • 索引

    • zrank正序

      # zrank key member            例子:zrank testz2 b1b2b3

      zrank my_zset three
    • zrevrank反序

      # zrevrank key member         例子:zrevrank testz2 b1b2b3

      zrevrank my_zset three
  • zscore : 查看score值

    # zscore key member         例子:zscore testz2 b1b2b3

    zscore my_zset2 a

  • zincrby : 修改score值

    #  zincrby key  score member          例子:zincrby testz2 2 b1b2b3
  • zcard 查看有序集合元素数

    # zcard key             例子:zcard testz2

    zcard my_zset

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

    #返回了 score 在 2~3 区间的元素          例子:zrangebyscore  testz2 21 23
    zrangebyscore my_zset 2 3 withscores
  • zcount 返回集合中 score 在给定区间的数量

    # zcount key min max             例子:zcount testz2 21 23

    zcount my_zset 2 3
  • zremrangebyrank : 删除集合中排名在给定区间的元素

    # zrange my_zset 0 -1 withscores        例子:zremrangebyrank  testz2 21 23
    zremrangebyrank my_zset 1 3
  • zremrangebyscore : 删除集合中 score 在给定区间的元素

    # zrange my_zset 0 -1 withscores            例子:zremrangebyscore testz1 0 2
    zremrangebyscore my_zset 1 2

Redis发布和订阅

#发布
publish 频道 消息 例子:publish qq1 "qq.com" # 订阅
subscribe 频道 例子:subscribe qq1 "hello"

reids 基本操作的更多相关文章

  1. Reids入门介绍

    一.入门概述 1.是什么? Redis:REmote DIctionary Server(远程字典服务器) 是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(key/value)分布式 ...

  2. Key/Value之王Memcached初探:二、Memcached在.Net中的基本操作

    一.Memcached ClientLib For .Net 首先,不得不说,许多语言都实现了连接Memcached的客户端,其中以Perl.PHP为主. 仅仅memcached网站上列出的语言就有: ...

  3. Android Notification 详解(一)——基本操作

    Android Notification 详解(一)--基本操作 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Notification 文中如有纰 ...

  4. Android Notification 详解——基本操作

    Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ...

  5. 三、Redis基本操作——List

    小喵的唠叨话:前面我们介绍了Redis的string的数据结构的原理和操作.当时我们提到Redis的键值对不仅仅是字符串.而这次我们就要介绍Redis的第二个数据结构了,List(链表).由于List ...

  6. 二、Redis基本操作——String(实战篇)

    小喵万万没想到,上一篇博客,居然已经被阅读600次了!!!让小喵感觉压力颇大.万一有写错的地方,岂不是会误导很多筒子们.所以,恳请大家,如果看到小喵的博客有什么不对的地方,请尽快指正!谢谢! 小喵的唠 ...

  7. 一、Redis基本操作——String(原理篇)

    小喵的唠叨话:最近京东图书大减价,小喵手痒了就买了本<Redis设计与实现>[1]来看看.这里权当小喵看书的笔记啦.这一系列的模式,主要是先介绍Redis的实现原理(可能很大一部分会直接照 ...

  8. Linq查询基本操作

    摘要:本文介绍Linq查询基本操作(查询关键字) - from 子句 - where 子句 - select子句 - group 子句 - into 子句 - orderby 子句 - join 子句 ...

  9. C++ map的基本操作和使用

    原文地址:http://blog.sina.com.cn/s/blog_61533c9b0100fa7w.html Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可 ...

随机推荐

  1. 制作本地yum源

    镜像源是centos当中下载相关软件的地址,我们可以通过制作我们自己的镜像源指定我们去哪里下载impala的rpm包,这里我们使用httpd这个软件来作为服务端,启动httpd的服务来作为我们镜像源的 ...

  2. redis下操作Set和Zset

    redis操作set 无序集合 元素为string类型 元素具有唯一性,不重复 命令 设置 添加元素 SADD key member [member ...]  获取 返回key集合所有的元素 SME ...

  3. Linux下zip命令

    解压命令(解压.覆盖解压) unzip zip unzip -o xxx.zip 压缩命令(支持多个文件或目录) zip -r xxx.zip xxx yyy.txt /a/b/c

  4. centos7挂载本地yum文件

    https://www.cnblogs.com/aenjon/p/4081794.html

  5. 关于 HTTP

    HTTP是一种能够获取如 HTML 这样的网络资源的 protocol(通讯协议).它是在 Web 上进行数据交换的基础,是一种 client-server 协议,也就是说,请求通常是由像浏览器这样的 ...

  6. J2SE 8的流库 --- 生成流

    本文介绍了如何产生J2SE 8的流, 包括基本类型的流IntStream, LongStream, DoubleStream . 展现流的方法 public static <T> void ...

  7. Linux服务器mysql,nginx等自动停止的排查,以及解决方法

    最近发现自己使用的某台云服务武器只要稍微流量大一点,就会出现莫名的的数据库连接错误的情况 ,然后连上服务器查看,发现mysql进程被结束了,经常出现这种情况,这还怎么得了,然后第一时间查看mysql日 ...

  8. 页面中onclick事件引号问题

    第一种:html中onclick调用事件 <p id="txt" onclick="changeSize()">加括弧的changeSize()&l ...

  9. js弹出div层内容(按回退键关闭div层及遮罩)

    <!--弹出的div列表对应的详情--> <div id="newhtml" class="white_content"> <di ...

  10. es6初级之箭头函数实现隔行变色

    无论是使用哪种方式实现隔行变色的效果,它的思路都是一样的: 1.定义很多个div 2.给div 加背景 3.鼠标移动到div上时,当前div 背景变色 4.鼠标移出div时,当前div背景恢复 以上4 ...