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