二:redis的数据类型及常见操作

来源:互联网 发布:个人简介html源码 编辑:程序博客网 时间:2024/06/04 19:44
 提供五种基本数据类型
String   hash  list  set  zset
清空数据:flushdb
String 类型:string 是最基本的类型,而且string 类型是二进制安全的。意思是redis 的string 可以
包含任何数据
设置值:  set 名字 值
取值      get  名字
删除 del 名字
setnx 名字 值 如果不存在就设置,存在不设置返回0
setex(expired)
setex 名字 10 值 设置名字的存在10间为10秒
setrange 替换字符串
  set  email 1230
  setrange email 2 ee (从第二位开始替换)--setrange email 2 ee
mset 名字 值 名字 值 名字 值。。。。设置多个值
mget 名字 名字 名字
getset  先得到在赋值
  set key1 AA
  getset key1 BB  得到在变成BB

incr 和 decr 对某一个值进行递增或减
incrby 和decrby 对某个值进行长度的递增和递减( incrby 名字[步长])
append【名字】 追加
   append "email" ss
   get email
   值---"12eess"


strlen【名字】 获取长度--strlen "email"  值是 (integer) 6  

清空数据:flushdb

-------------------
 hash 类型 是string类型的filed和value 的映射表,
 或者说是一个string集合。   特别适合存储对象,相比较而言,对象类型存在hash里 要
比在string里面占用更少的空间  方便存取整个对象
 1: hset test1 name 小明  hset 是hash集合,test 是集合的名字,name是字段名,小明是值
 2: heget test1 name   得到小明   
 3: hmset test2 name xiaozhou  age 18 sex men 存多个值(值不能为空)
 4: hmget test2 name  sex 得到多个值
 5: hgetall test2 返回hash的所有filed和value
 6: hvals test2返回hash的所有value  
 7: hlen test2 返回指定hash的field数量
 8: hkeys test2返回hash的所有field
 9: hdel test2 name删除指定的hash field
 10:hexists test2 name 测试指定field是否存在 存是(1)
 11: hincrby test2 age 1234 将指定的hash filed 加上给定值(好像需要原本的值是数字integer)

-----list类型
 list类型(里面的元素可以重复)  是一个链表结构的集合,主要功能有pubsh,pop获取元素等。或者说list

类型是一个双端链表的结构,我们可以通过相关操作进行集合的头部或者尾部添加删除元素,可以作栈和队列

,满足大多数需求。
0:lrange 名字 0 -1 (表示从头到尾获取元素)lrange list1 0 -1
1:lpush 方法   从头部插入元素(栈)(先进后出) lpish list1 1 2 3 4
2:rpush 方法 从尾部加入元素(队列)先进先出  rpush list2 1 2 3 4
3:linsert 插入元素
    lpush list3 "ww"
    linsert list3 before "ww" e
linsert 集合  before 集合中的元素    插入的元素
4: lset方法:将指标下标的元素替换掉
   lset list4 0 "vv"
5:lrem方法:删除元素,返回删除的个数
lrem list4 2(要移除的个数) 1(要移除的元素)
6:ltrim:保留指定范围内的数据(下标)
ltrim list4 0 2 --0到2 下标
7:lpop:从list的头部删除元素,并返回删除的元素
lpop list4
8:rpop:从list的尾部删除元素,并返回删除的元素
rpop list4
9:lindex方法:返回list 中index位置的元素
lindex list1 0  即查看list1 中下标为0的 值
10:llen方法:返回元素的个数
   llen list1
------------------------\
set 是无序集合(没有重复的数据),最大可以包含(2 的32 次方-1)个元素。set 的是通过hash table 实现的,
所以添加,删除,查找的复杂度都是O(1)。hash table 会随着添加或者删除自动的调整大小。
需要注意的是调整hash table 大小时候需要同步(获取写锁)会阻塞其他读写操作。可能不
久后就会改用跳表(skip list)来实现。跳表已经在sorted sets 中使用了。关于set 集合类型
除了基本的添加删除操作,其它有用的操作还包含集合的取并集(union),交集(intersection),
差集(difference)
1:sadd key member 添加一个 string 元素到 key 对应 set 集合中,成功返回 1,如果元素以及
在集合中则返回0,key 对应的set 不存在则返回错误。

srem key member 从 key 对应 set 中移除指定元素,成功返回 1,如果 member 在集合中不
存在或者key 不存在返回0,如果key 对应的不是set 类型的值返回错误。
spop key 删除并返回 key 对应 set 中随机的一个元素,如果 set 是空或者 key 不存在返回
nil。
srandmember key 同 spop,随机取 set中的一个元素,但是不删除元素。
smove srckey dstkey member 从srckey对应set中移除member并添加到dstkey对应set中,
整个操作是原子的。成功返回1,如果member 在srckey 中不存在返回0,如果key 不是set
类型返回错误。
scard key 返回 set的元素个数,如果 set是空或者 key不存在返回 0。
sismember key member 判断 member 是否在 set 中,存在返回 1,0 表示不存在或者 key 不
存在。
sinter key1 key2 …… keyN 返回所有给定key 的交集。
sinterstore dstkey key1 ....... keyN 返回所有给定 key的交集,并保存交集存到 dstkey下。
sunion key1 key2 ...... keyN 返回所有给定 key的并集。
sunionstore dstkey key1 ...... keyN 返回所有给定 key的并集,并保存并集到 dstkey下。
sdiff key1 key2 ...... keyN 返回所有给定 key 的差集。
sdiffstore dstkey key1 ...... keyN 返回所有给定 key的差集,并保存差集到 dstkey下。
smembers key 返回 key 对应set 的所有元素,结果是无序的。
---------------zset---

zset是在set的基础上增加了顺序,形成一个有序的集合

操作:

(1)zadd

向有序集合zset中增加一个元素。例如:zadd zset 1 Hello

(2)zrange

输出zset中指定范围内的的所有元素,按照score从小到大的顺序。

例如:zrange zset 0 -1 withscores,表示输出有序集合zset中所有的元素,并且输出顺序号。

(3)zrem

删除名称为key的zset集合中的元素member。例如:zrem set1 Hello。

(4)zincrby

把有序集合zset中的指定元素的序列号加上指定的值。例如:zincrby zset 4 Hello

(5)zrank

返回名称为key的zset集合中元素的排名,按照下标从小到大的排名。例如:zrank zset Hello。

(6)zrevrank

返回名称为key的zset集合中元素的排名,按照下表从大到小的排名。例如:zrevrank zset Hello。

(7)zrevrange

按照score从大到小的顺序输出集合中所有元素。例如:zrevrange zset 0 -1 withscores。

(8)zrangebyscore

返回集合中给定区间的元素。例如:zrangebyscore zset 2 3 withscores

(9)zcount

返回集合中score在给定区间的数量。zcount zset 2 3

(10)zcard

返回集合中元素的个数。

(11)zremrangebyrank

按照索引来删除给定区间的元素。例如:zremrangebyrank zset 1 2

(12)zremrangebyscore

删除score在指定范围内的元素。例如:zremrangebyscore zset 1 2
0 0