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 [email protected]
2、获取hash表中指定的field值:hget key field
  hget stu01 id
3、批量保存数据到hash表中:hmset key field value [field value....]
  hset stu02 id 1002 name lisi email [email protected]
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



猜你喜欢

转载自www.cnblogs.com/pogusanqian/p/12697683.html