zoukankan      html  css  js  c++  java
  • 107_Redis基础命令——集合、hash、set与事务

    redis中关于集合的操作命令:
    1、将一个或者多个元素加入集合中:sadd key member [member ....]
      如果元素重复,则后添加的忽略。
      sadd set01 a b c
      sadd set01 a d e
    2、查看集合中所有的元素:smembers key
      smembers set01
    3、判断指定值是否在集合中:sismemeber key value
      sismember set01 b
    4、从集合中移除一个或者多个元素:srem key member [member member....]
      srem set01 e
      srem set01 b c d
    5、从集合中随机返回一个或者几个元素:srandmember key [count]
      |->count>0:获取元素都不重复
      |->count<0:获取元素可以重复
      srandmember set01:随机获取一个元素
      srandmember set01 3:随机获取3个元素(不能重复)
      srandmember set01 -3:随机获取3个元素(可以重复)
    6、从集合中随机获取一个或者多个元素,并且把获取到的元素从集合中删除:spop key [count]
      spop set01
      spop set01 2
    7、把指定元素从一个集合中移动到另一个集合中:smove src dest member
      smove set01 set02 f
    8、获取第一个集合中有,但是其它集合中都没有的元素:sdiff key key [key key ....]
      sdiff set01 set02 set03
    9、获取所有指定集合中所有的元素:sunion key [key key ....]
      重复的元素只取一个。
      sunion set01 set02 set03
    =============================================================
    redis中关于hash表的操作命令:
    hash里的值存储的field-value,例如name="zhangSan",所以可以使用hash表示对象
    1、将数据保存到hash表中:hset key field value [field value....]
      如果此hash表中已经存在此field,则后放的值会把前放的值覆盖。
      hset stu01 id 1001
      hset stu01 name zhangsan email zs@163.com
    2、获取hash表中指定的field值:hget key field
      hget stu01 id
    3、批量保存数据到hash表中:hmset key field value [field value....]
      hset stu02 id 1002 name lisi email ls@163.com
    4、批量获取hash表中指定的field值:hmget key field [field ....]
      hmget stu02 id name email
    5、获取hash表中所有的field和value:hgetall key
      hgetall stu01
    6、删除hash表中指定的一个或者多个field和value:hdel key field [file ....]
      hdel stu02 name email
    7、获取hash表中fild-vlaue的对数:hlen key
      hlen stu01
    8、查看指定field在hash表中是否存在:hexists key field
      hexists stu01 name
    9、获取hash表中所有filed:hkeys key
      hkeys stu01
    10、获取hash表中所有value:hvals key
      hvals stu01
    11、给hash表中某一个value增加某个数运算:hincrby key filed int
      hincrby stu01 age 5
    12、给hash表中某一个value增加某个数运算:hincrbyfloat key filed float
    13、将数据保存到hash表中,如果此属性已经存在,则不保存:hsetnx key field value [field value....]
    ==============================================================
    redis中关于zset的操作命令
    1、将数据保存到有序集合中:zadd key score member [score member....]
      zadd zset01 20 z1 30 z2 15 z3 50 z4
      会自动按照分数排序。
      zadd zset01 25 zz
    2、根据下标获取有序集合中的元素:zrange key startIndex endIndex [withscores]
      下标都是从0开始,下标可以为负数,负数表示从后往前计算,-1表示最后元素的下标。
      z3 z1 z2 z4
      zrange zset01 1 3 withscores
    3、根据分数获取有序集合中的元素:zrangebyscore key minScore maxScore [withscores]
      zrangebyscore zset01 20 40 withscores
    4、移除有序集合中的元素:zrem key member [member...]
      zrem zset01 zz z2
    5、获取有序集合中所有元素的个数:zcard key
      zcard zset01
    6、根据分数获取有序集合中元素的个数:zcount key minScore maxScore
      zcount zset01 20 40
    7、获取有序集合中指定元素的排名(从前往后数,从0开始):zrank key member
      zrank zset01 z1
    8、获取有序集合中指定元素的排名(从后往前数,从0开始):zrevrank key member
      zrevrank zset01 z1
    ======================================================================
    redis的配置文件:
    1、安装好redis软件之后,在redis的安装目录下自动提供 redis.conf;

      如果启动redis服务时没有指定配置文件,redis会使用默认的参数;
      如果启动redis服务时指定了配置文件,则redis的运行会参考配置文件中的参数。

      如果我们要修改配置文件中的参数,必须在启动redis时,指定使用配置文件。
      启动redis服务时,指定使用配置文件:redis-server 配置文件名称(redis.conf) &
    2、配置redis的端口号:port 6379
      默认是6379
    3、配置访问redis的ip地址:bind ip
      如果配置指定访问redis的ip地址,则使用redis所在机器上任何一个ip都能访问redis:127.0.0.1、192.168.2.129、
      配置指定访问redis的ip地址,则访问redis时只能使用此ip才能访问到redis服务。
      实际,bind一般都是指定服务器上某一个网卡的真实ip。
    4、databases:配置Redis数据库的个数,默认是16个。
    ======================================================================
    redis的持久化:
    RDB:
    AOF:
    ======================================================================
    Redis的事务:
    1、数据库的事务:操作顺序性、操作的原子性。
    2、redis的事务:顺序性、原子性。
      允许在一个事务中顺序执行一组命令,正常情况下能够保证原子性(部分保证)。
      multi:开启一个事务。开启事务之后,再输入的指令都会被压入事务队列中,而不会直接执行;当事务运行时一起执行。
      exec:执行事务。会把事务中压入队列的所有指令一起顺序执行,并且结束本事务。

      multi
      set k1 v1
      set k2 v2
      exec
    3、事务开启之后,如果在指令压入队列的过程中发生异常,则所有此事务中指令执行失败(例如命令输错)。
      multi
      set k1 v1
      setkjkjkj k2 v2
      exec
    4、事务开启之后,如果在事务执行过程中发生异常,则只会影响本条指令的运行结果,其它指令正常运行(例如对字符串进行incr)。
      multi
      set k1 vv1
      set k2 vv2
      incr k1
      exec

    5、清除压入队列中的所有命令:
      discard
    6、在事务开启之前,监控某一个key;在事务执行之前,如果这个key值发生改变,则事务中所有的指令放弃执行;如果这个key值不发生改变,事务正常执行:
      watch flag
      multi
      set k1 v1
      set k2 v2
      exec
    7、放弃前边所有的监控key:unwatch
      watch flag
      unwatch
      watch flag2
      multi
      set k1 v1
      set k2 v2
      exec



  • 相关阅读:
    angularJS 修改操作select回显选中的数据
    zkteco iface702 中控考勤机java开发步骤二---获取考勤机 的考勤数据
    zkteco iface702 中控考勤机java开发步骤一---连接考勤机
    JQuery的分页插件pagination.js
    Ajax跨域后台处理
    发送邮箱工具类--阿里企业邮箱群发
    kindeditor-4.1.10 ---文件上传
    导出excel表格
    算法
    Arrays类——Arrays.asList()方法使用
  • 原文地址:https://www.cnblogs.com/pogusanqian/p/12697683.html
Copyright © 2011-2022 走看看