目前,Vmware在资助着redis项目的开发和维护。
5种基本type:String hash list set zset strings string是最简单类型,是二进制安全的 包含任何数据比如图片和对象序列化 set name hello get key setnx 如果k存在返加0 nx note exist 不覆盖,不存在设置新值 setnx name hello setex 设置k的值为string类型的value 并且指定有效期 setex namex 10 jak 10秒有效期 setrange 设置 指定key的value值 的子字符串 get name xiaomingxxxxxx@126.com setrange name 8 aaaaaa 从下标开始 替换指定长度跟替换的一样 get name mset 一次设置多个key的值 失败全不成功 mset k1 xiaoming k2 xiaohong msetnx note exis 不会覆盖已经存在的key getset 设置key的值 并返回key的旧值 getset k1 hello getrange 获取key的value的子字符串 getrange k1 0 3 从0到第3个返回 mget 批量获取 mget k1 k2 incr 递增 set k3 10 incr k3 incrby k4 10 加指定值 key不存在 则设置key 为认为原来的value为0 incrby k4 -10 decr 对key的值做减减 decrby 指定减 append 给指定key的字符串追加value append k1 world 返回长度 strlen 返回值长度 strlen k1
hashset类型 是一个string类型的field和value的映射表,它的添加、删除操作都是0(1)(平均) hash特别适合用于存储对象,相较于将对象的每个字段存成单个string 类型 将一个对象存在hash中会暂用很少的内在,并且可以方便的存取整个对象 hset 设置hash field为指定值 如果key不存在 则先创建 hset myhash field hello hset user:001 name jak hget user:001 name hsetnx user:002 name hello hmset 批量设值 hmset myhash field hello field2 world hmget 获取所有健 hmget user:002 name age x 批量返回 hincrby user:002 age 10 自增 hexists hash表字段是否存在 hexists user:002 age hlen返回指定hash的key数 hlen user:002 hdel 删除指定hash的field字段 hdel myhash age hkeys 返回hash所有字段 hkeys user:002 hvals 返回hash所有value hvals user:002 hgetall 获取某个hash中全部的字段和值 hgetall user:002
==================list start=========================== list是一个链表结构,主要功能是push,pop, 获取一个范围的所有值等等,操作中key理解为链表的名字。 redis的list类型其实就是一个每个子元素都是string类型的双向链表。 我们可以通过push pop操作从链表的头部或者尾部添加删除元素 这样list即可以作为栈,又可以作为队列。 push 压入一个元素 pop 弹出一个元素 lpush 从头部压入一个元素 先进后出 lpush mylist world lpush mylist hello lrange mylist 0 -1 取元素 hello world rpush从尾部压入元素 先进先出 队列 rpush list2 jak rpush list2 tom lrange list2 0 -1 jak tom linsert 在key对应list的特定位置前或后添加字符串 linsert list2 before jak sum lset 设置list中指定下标元素替换掉 lset list2 1 updatev lrem 从key对应list中删除N个和value相同的元素 (n<0从尾删除,N=0全部删除) lrem list2 2 jak 删除 几个元素 ltrim 保留指定key的值范围内的数据 ltrim list2 1 -1 把第0个删掉 lpop 从list的头部删除元素 并返回删除元素 lpop list2 rpop 从尾部弹出一个元素 rpop list2 lpoplpush 从第一个list的尾部移除元素并添加到第二个list的头部 lpoplpush list2 list3 lindex 返回名称为key的list中index位置的元素 linex list2 0 lindex list2 1 llen 返回key对应list的长度s llen list2 ==================list end===========================
===========sets 无序集合================ sadd myset1 one sadd myset1 two sadd myset1 two 不能增加重复值 smembers myset1 查看元素 srem 删除 srem myset1 one spop 随机弹出元素 sdiff 返回所有给定key与第一个Key的差集 sdiff myset1 myset2 sdiffstore 存储差集的值 sdiffstore myset3 myset1 myset2 sinter 交集 sinter myset1 myset2 sinterstore 存储交集的值 sunion 返回所有给定key的并集 sunion myset1 myset2 sunionstore 存储并集 smove 从第一key对应的set中移除元素并添加到第二个对诮的set中 smove myset1 myset2 three 把three从1移到2中 scard 返回名称key的集合个数 sismember 测试元素是否是名称为key的Set的元素 sismember myset1 two 返回1代表是 sismember myset1 twox 返回0代表不是 srandmember 随机返回集合的一个元素 ,但不删除元素 srandmember myset1 ====================
=============sorted sets 有序集合=========================== 是set的一个升级版本 加一个顺序属性 zset会自动重新排序, 可以理解为有两列的mysql表 一列存value 一列为顺序,操作过程中 key可以理解为名称 zadd 向名称为key的zset中添加元素member,score用于排序 如果该元素存在,则更新其顺序 zadd myzset 1 one zadd myzset 2 two zadd myzset 3 two 会把顺序更新为3 zrange myzset 0 -1 withscores 0第一个位置 -1 最后一个 zrem 删除名称为key的zset中的元素member zrem myzset1 one zincrby 以指定值增加 如果在名称为key的zset中已经存在元素 memebre,则该元素的score增加incremernt否则 向该集合中添加该元素,其score的值为increment zincrby myzset 4 two 对顺序号进行增加 -数为减 zrank 返回名称为key的zset中memebr元素的排名 (按score从小到大排序) 即下标 zrank myzset1 two
原文地址:http://blog.csdn.net/liangrui1988/article/details/45460139