redis常见数据操作
redis中有5种常见的数据类型,针对这5种数据类型有着相应的数据操作。
1.String(键值对为String - String) set k1 v1 get k1 getset k1 v1 - hehe mset k2 v2 - 123 k3 v3 -456 mget k1 k2 k3 incr num //自增1 incrby num 2 decr num decrby num 2 append k1 "haha" strlen k1 2.Hash(操作对象数据) hset user username "zhangsan" hmset user usersex male userage 18 hget user username hmget user usersex userage hincrby user userage 2 hdel user userage hexists user userage hkeys user hvals user hlen user 3.list(linkedlist, 有序列表) lpush list:1 1 2 3 rpush list:1 4 5 6 lrange list:1 0 2 lrange list:1 0 - 1 lpop list:1 rpop list:1 lrem list:1 1 1 lrem list:1 0 2 lrem list:1 - 1 3 lindex list:1 1 lset list:1 1 9 linsert list:1 before 4 001 linsert list:1 after 6 007 rpoplpush list:1 newlist 4.set(无序, 不可重复) sadd set:1 a b c srem set:1 a smembers set:1 sismember set:1 a sadd setA 1 2 3 sadd setB 2 3 4 sdiff setA setB sdiff setB setA sinter setA setB sunion setA setB scard setA spop setA 5.zset(sortedset, 有序集合,可排序,但是元素唯一) [注:Sortedset和set的不同之处,是会给set中的元素添加一个分数,然后通过这个分数进行排序。] zadd scoreboard 60 zhangsan 70 lisi 80 wagnwu zadd scoreboard 90 zhaoliu zscore scoreboard lisi zrem scoreboard lisi zrange scoreboard 0 3 zrevrange scoreboard 0 3 zrange scoreboard 0 3 withscores zrank scoreboard zhaoliu zrevrank scoreboard zhaoliu zrangebyscore scoreboard 70 90 withscores zincrby scoreboard 5 lisi zrange scoreboard 0 - 1 zcard scoreboard zcount scoreboard 80 90 zremrangebyrank scoreboard 0 1 zramrangebyscore scoreboard 70 90 其他常用命令: keys * exists k1 del k1 rename k1 k2 type k1 expire k1 1 ttl k1
另外,在数据持久化存储方面,Redis默认通过快照的方式将数据持久化到磁盘中。可以在redis.conf中修改持久化快照 的条件(如 save 900 1);还可以在redis.conf中指定持久化文件存储的目录(如 dbfilename dump.redb)。一旦redis非法关闭,那么会丢失最后一次持久化之后的数据。如果数据不重要,则不必要关 心;如果数据不能允许丢失,那么要使用aof方式。
Redis默认是不使用Aof方式持久化的。Aof方式的持久化,是操作一次redis数据库,则将操作的记 录存储到aof持久化文件中。使用aof方式持久化数据的步骤是:开启aof方式的持久化方案,将redis.conf中的appendonly改为yes,即开启aof方式的持久化方案; Aof文件存储的目录和rdb方式的相似,Aof文件存储的名称是 appendfilename "appendonly.aof"。
在同时使用aof和rdb方式时,如果redis服务器重启,则数据从aof文件加载。
持久化保证了即使redis服务重启也不会丢失数据,因为redis服务重启后会将硬盘上持久化的数据
恢复到内存中,但是当redis服务器的硬盘损坏了可能会导致数据丢失,如果通过redis的主从复制机制就可
以避免这种单点故障。关于这方面的资料,请参考《Redis集群配置》。