您的位置:首页 > 数据库 > Redis

redis缓存

2015-09-05 09:47 621 查看
Redis虽然是一个内存数据库,但也可以将数据持久化到硬盘,有两种持久化方式:RDB和AOF。 
RDB持久化方式定时将数据快照写入磁盘。这种方式并不是非常可靠,因为可能丢失数据,但非常快速。 
AOF持久化方式更加可靠,将服务端收到的每个写操作都写入磁盘。在服务器重启时,这些写操作被重新执行来 
重新构建数据集。

String类型
set name 1
get  name 
setnax 如果存在返回0  不覆盖
setex 是这有效期  setex color 10  red
setrange  name 6 qcw.com(从第六个开始字符替换)
mset key1 v1 key2  v2    不会覆盖已经存在到key  (批量设置)
getset name  123 获取旧值并设置新值
getrange name 0 4 获取0-4之间字符
mget key1 key2  key3(批量获取)
incr  key1 (对值递增加1 返回新值 )
incrby  key1 5 (不存在自动创建,初始值默认为0  自增自减少数自定义)
decr  keyy (自减少)
decrby key   -3(正数自增 负数 自减少)
append  naem .net (给指定的字符串增加,返回长度)
strken name (取指定字符串的长度, 返回长度)

hashes(哈希)类型

hset user:001 name qxw   设置hash field 为指定值 如果key不存在  创建
hget user:001 name
 hsetnx  user:002 name lamp (返回1,失败 0)
hmset  user:003 name 333 age 20 sex 1 (批量设置值)
hmget user:003 name  age  sex (批量获取value )
hincrby  user:003 age 5 (指定自增)
hexists user:003 age(  测试值是否存在 )
hlen user:003 (返回hash的数量)
hdel user:003 age (删除)
hkeys  user:003 (返回hash 表所有key)
hvals user:003(返回所有 value)
hgetall user:003 (返回所有的key和value)

list(列表)
类型(是一个链表结构push pop 获取一个范围的所有值)
lpush list1 “hello” (从头部压入一个元素)
rpush list1 “word” (从尾部压入一个元素)
lrange list1 0 -1(取值)
linsert list1 before “word” “hello” (在特定的元素前或后添加元素)
lrem list 3 “hello”(删除n个和value相同的元素 n=0全部删粗  n<0 从尾部删除)
ltrim list1 1 -1 (保留指定key的范围内的数据,下表从0开始 -1代表一直到结束)
lpop list1 (从头部删除元素,并返回删除元素)
rpop list1 (从尾部删除元素,并返回删除的元素)
rpoplpush list1  list2 (从第一个list的尾部移除元素并添加到第二个list的头部)
lindex list1 0(返回key的list中index位置的元素)
llen list1 (返回key对应list的长度)

对Set(集合)操作的命令

sadd myset key hello key2  hollo2 (向集合成添加一个或多个成员)
scard myset(获取集合成员的个数)
sdiff myset myset2(返回给定所有集合的差集)
sdiff detis myset myset2(返回给定集合的所有差集并存储在detis中)
sinter myset myset2 (返回集合的交集)
sinterstore detis myset myset2(返回交集 并存储在detis中)
sismember myset "hello" (判断元素是否是myset集合中的成员)
smembers myset (返回集合中所有的成员)
smove myset detis hello(将元素移动到detis中)
spop myset(移除并返回集合中的一个随机元素)
srandmember myset 2(返回集合中一个或多个随机数)
srem myset [member2] [member2](移除集合中一个或多个成员)
sunion  myset myset2(返回集合并集)
sunionstore detis  myset myset2(将指定的集合存储在detis中)

Redis 有序集合(sorted set)
Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

zadd myset 1"hello" (向有序集合中添加一个或多个成员,或者更新已存在成员的分数)
zrange myzset 0-1 WITHSCORES(获取集合中的所有元素和分数)
zrange salary 1 2 WITHSCORE
zcard myset4 (获取有序集合的成员数)
zcount myset4 1 4(返回指定区间分数的成员个数)
zincrby myset4 2 "hello"(将集合中指定的成员的分数加2)
zinterstore sumpoint 2 myset4 myset3 (取交集,分数相加,存储到 sumpoint )

zlexcount myset4 - +(计算有序集合中指定字典区间的成员数量)

Redis Zrangebylex 通过字典区间返回有序集合的成员。
redis 127.0.0.1:6379> ZADD myzset
0 a 0 b
0 c 0 d
0 e 0 f
0 g
(integer)7
redis 127.0.0.1:6379> ZRANGEBYLEX myzset
-[c
1)"a"2)"b"3)"c"
redis 127.0.0.1:6379> ZRANGEBYLEX myzset
-(c
1)"a"2)"b"
redis 127.0.0.1:6379> ZRANGEBYLEX myzset
[aaa (g
1)"b"2)"c"3)"d"4)"e"5)"f"
redis>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  redis 数据库