和redis谈一场恋爱(第二天约会了解彼此)
最近使用了Memcache,带来的便利已经让我欣喜若狂。开启了另一种又快又好的方式存储和读取数据。中间经过了一番折腾,学习了mysql,终于有学到了redis。
Redis的全名是Remote Dictionary server (远程字典服务器).是一个基于内存的网络存储系统。
redis比Memcache支持的数据类型更为广泛,操作更加灵活。Memcache只支持key => value的数据存储方式。而Redis则支持更多的数据类型。
Redis的数据类型共计5种,分别是:
1、string(字符串)
2、hash(哈希表)
3、list (双向队列)
4、set(集合)
5、zset(集合)
String
1、set 命令 set key value
2、get 命令 get key
3、setnx key value 只有当这个键不存在的时候才设置,若键存在则会返回0(nil)表示失败,防止覆盖。
setnx 的命令全称是:set if no exists;
4、setex key time content 设置一个key的到期时间。
setex 是set expiration 的缩写。
5、ttl key 可以查看某个key的剩余生存时间。
ttl 是time to life 的缩写。
6、setrange key num content 修改一个值 ,从第几个字符开始修改。字符串的第一个字符默认从0开始。
7、mset key1 name1 key2 name2 keyn namen 批量设置key => value值。
mset 是multi set的缩写。
8、mget key1 key2 keyn 批量获取设置的值。
9、msetnx name1 key2 name2 keyn namen 批量设置不存在的值,如果其中一个key存在,则设置失败。
10、getrange key startIndex endIndex 取出某个字符串 startIndex 起点索引, endIndex 终点索引。
可以使用getrange key 0 -1 来取出所有的字符。
11、strlen key 得到该字符串的长度。
12、incr key 每次增加1
incr 是increment的缩写
12、decr key 每次减少1
decr是decrement的缩写
13 decrby key num incrby key by 在数值的基础上增加或减少num。
14、append key content 如果该字符串存在,则加载末尾。
15、del key 删掉该key,key删掉后,值也一并会删掉。
16、keys * 查看当前所有的key
Hash
1、hset name key value 类似于二维数组
2、hget name key 类似于二维数组取值。
3、hsetnx name key vaue 只有不存在才能设置。
4、hexists name key 判断hash表中某个键是否存在。
5、hlen name 统计hash表的纬度,类似于count()统计数组元素个数。
6、hkeys name 列出hash表name字段的所有key,相当于array_keys()
7、hvals name 列出hash表name字段所有的values ,相当于array_values()
8、hgetall name 列出hash表中所有的name和values。
9、hincrby name key num 同字符串操作。
10、hdel name key 只删除该字段下的该key。
List
List是一个链表结构,主要的功能就是push于pop操作。redis的list子元素其实每个都是一个string类型。操作方式上是队列的操作,十分有意思。
1、lpush listname str1 str2 str3 str4 从队列的左往右插。
2、rpush listname str1 str2 str3 str4 从队列的从右往左插。
3、lrange listname 0 -1 取出全部的链表
4、linsert listname before | insert str1 str 在指定的字符前或后添加一个字符。
5、lset listname index str 替换链表指定索引的值。
6、lrem listname n 指定值 n>0.从左向右删除n个元素。n < 0从右向左删除n个元素。n=0 删除所有值为指定值的值。
7、lpop listname 删除链表最左的一个。
8、rpop listname 删除链表最后的一个。
9、rpoplpush 从源列表的右边删除一个,并加入到目标列表的右边。
10、lindex listname index 获取链表中指定下标的的值。
11、llen listname 获取链表的元素的个数。
set
set是一个集合类型,他是string类型的无序集合。对集合我们可以采取并集、交集、差集。通过这些操作我们可以实现社交网站中的好友推荐和blog的tag功能,且不允许有重复值。
1、sadd 键 str1 str2 str3 str3 str4 在set集合中添加无序集合。
2、smembers 键 获取set集合中的元素。
3、srem 键 str1 str2 删掉集合中的一个或者多个元素。
4、spop 从集合中随机删除一个元素,并返回这个元素的值。
5、srandmember 从集合中随机返回一个元素,不返回。
6、scard 键 返回集合的元素个数。
7、sismember 键 值 判断某个值是否存在于集合中
8、sdiff 键1 键2 返回键1 与 键2的差集。
9、sdiffstore 新键 键1 键2 返回键1 与 键2 的差集,并插入到新的集合中。
10、sinter 键1 键2 返回键1 与 键2 的交集。
11、sinterstore 新键 键1 键2 返回键1 与 键2 的交集, 并插入到新的集合中。
12、sunion 键1 键2 返回键1 与 键2 的并集,并去除重复的数据。
13、sunionstore 新键 键1 键2 返回键1 与 键2 的并集,并将并集插入到新的集合中。
14、smove 键1 键2 str1 将键1 中的某个值,放进键2 中。
sorted set
顾名思义,这个集合集可以排序。
1、zadd 集合 scores names 特别适合添加成绩,以及排名信息。会自动排序,从小到大。
2、zrange 集合 0 -1 withscores 返回所有的数字以及名字。
3、zrevrange 集合 0 -1 withscores rev是reverse(翻转)的缩写。返回从大到小的顺序。
4、zrangebyscore 集合 起始分数 截至分数 withscores
返回某个捍卫内的信息。
5、zrem 集合 值1 值2 删除集合中的一个值或者多个值。
6、zincrby 集合 增量 值。 给有序集合中制定的成员添加分数。
7、zrank 集合 值 返回有序集合中指定值的下标,从前往后。
8、zrevrank 集合 值 返回有序集合中指定值的下标,从后向前。
9、zcount 集合 起始分数 结束分数。 返回有序集合中起始分数与结束分数之间的元素个数。
10、zcard 集合 返回有序集合中元素的个数。
11、zremrangebyrank 集合 起始下标 结束下标
删除有序集合中,从开始index 到结束index之间的元素。
12、zinterstore 新集合 集合个数 集合1 集合2 返回集合的交集放到新集合中去。 inter 是interscate[ˌɪntərˈsekt]
13、zunionstore 新集合 集合个数 集合1 集合2 返回集合的并集放到新集合中。