运维界的卡乐咪

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

  Redis是一个开源的key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集等,而且这些操作都是原子性的。在此基础上,Redis支持各种不同方式的排序,与memcahed一样,为了保证效率,数据库都是缓存在内存中。区别是Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加记录文件,并且在此基础上实现了master-slave(主从)同步。

 

 

1.Redis可保存数据类型

字符串、列表、有序集合、哈希表、集合

2.常规操作

KEYS * 查看KEY (键) 支持通配符

DEL删除给定的一个或多个key

EXISTS检查是否存在

EXPIRE设定生存时间

TTL以秒未单位返回过期时间

DUMP RESTORE 序列化与反序列化

PEXIRE PTTL PERSIST以毫秒为单位

RENAME变更KEY名

SORT键值排序,有非数字时报错

TYPE返回键所存储值的类型

3.字符串

SET name “zhangsan”

GET name

一个键最大能存储512MB

127.0.0.1:6380> set lisi 26
OK
127.0.0.1:6380> get lisi
"26"
127.0.0.1:6380> type lisi
string

append将value追加到key原来的值的末尾

127.0.0.1:6380> append lisi ss
(integer) 5
127.0.0.1:6380> get lisi
"123ss"

mget  mset同时设置一个或多个键值对

127.0.0.1:6380> mset lisi 123 wangwu 22
OK
127.0.0.1:6380> mget lisi wangwu
1) "123"
2) "22"

STRLEN返回字符串长度

127.0.0.1:6380> strlen lisi
(integer) 5

INCR DECR将值增或减1 (必须是整数)

127.0.0.1:6380> decr age
(integer) 33
127.0.0.1:6380> decr age
(integer) 32
127.0.0.1:6380> decr age
(integer) 31
127.0.0.1:6380> incr age
(integer) 32
127.0.0.1:6380> incr age
(integer) 33
127.0.0.1:6380> incr age
(integer) 34

INCRBY DECRBY减去指定量 (必须是整数)

127.0.0.1:6380> incrby age 100
(integer) 120
127.0.0.1:6380> decrby age 100
(integer) 20
127.0.0.1:6380> get age
"20"

4.Hash(哈希)

Redis hash是一个键值对集合。

Redis hash是一个string类型的field和value的映射表

hash特别适合用于存储对象。

每个hash可以存储2^32-1键值对

hset  hget 设置返回单个值

127.0.0.1:6380> hset user1 name zhangsan
(integer) 0
127.0.0.1:6380> type user1
hash
127.0.0.1:6380> hget user1 age
"22"
127.0.0.1:6380> hget user1 name
"zhangsan"

hmset  hmget设置返回多个值

127.0.0.1:6380> hmset user2 id 1 name zhangsan age 22
OK
127.0.0.1:6380> hmget user2 id name age
1) "1"
2) "zhangsan"
3) "22"

hgetall 返回KEY的所有键值

127.0.0.1:6380> hgetall user1
1) "name"
2) "zhangsan"
3) "age"
4) "22"
5) "sex"
6) "man"

hexsits hlen

hkeys hvals获取所有字段或值

hdel删除key 中的一个或多个指定域

127.0.0.1:6380> del user1    //删除整个数据
(integer) 1
127.0.0.1:6380> hdel user2 age  //删除其中的一个或多个key和value
(integer) 1
127.0.0.1:6380> hgetall user2
1) "id"
2) "1"
3) "name"
4) "zhangsan"

5、LIST列表
Redis列表是简单的字符串列表

按照插入顺序排序每个

LIST可以存储2^32-1键值对

lpush 将一个或多个值插入到列表头部

127.0.0.1:6380> lpush list1 bmw toyota honda 123
(integer) 4
127.0.0.1:6380> type list
none
127.0.0.1:6380> type list1
list
127.0.0.1:6380> lrange list1 0 10
1) "123"
2) "honda"
3) "toyota"
4) "bmw"

rpush 将一个或多个值插入到列表尾部

127.0.0.1:6380> rpush list1 BYD
(integer) 6
127.0.0.1:6380> lrange list1 0 10
1) "volvo"
2) "123"
3) "honda"
4) "toyota"
5) "bmw"
6) "BYD"
127.0.0.1:6380> rpush list1 bao1
(integer) 5
127.0.0.1:6380> rpush list1 bao2
(integer) 6


lpop  rpop 移除表头/尾的元素

127.0.0.1:6380> lpop list1
"volvo"
127.0.0.1:6380> lrange list1 0 10
1) "123"
2) "honda"
3) "toyota"
4) "bmw"
5) "BYD"
127.0.0.1:6380> rpop list1
"BYD"
127.0.0.1:6380> lrange list1 0 10
1) "123"
2) "honda"
3) "toyota"
4) "bmw"

llen返回列表长度

127.0.0.1:6380> llen list1
(integer) 4

lrange返回指定的元素

127.0.0.1:6380> lrange list1 0 1
1) "123"
2) "honda"

lrem list2 2 morning 删除前两个morning

127.0.0.1:6380> lrange list2 0 10
 1) "hello"
 2) "you"
 3) "hello"
 4) "morning"
 5) "lisi"
 6) "zhangsan"
 7) "2"
 8) "1"
 9) "morning"
10) "morning"
127.0.0.1:6380> lrem list2 2 morning
(integer) 2
127.0.0.1:6380> lrange list2 0 10
1) "hello"
2) "you"
3) "hello"
4) "lisi"
5) "zhangsan"
6) "2"
7) "1"
8) "morning"

lrem list2 -1 morning 删除最后一个morning

lrem list2 0 hello 删除所有hello

127.0.0.1:6380> lrange list2 0 10
1) "you"
2) "lisi"
3) "zhangsan"
4) "2"
5) "1"

lindex 返回列表key中下标为index的元素

127.0.0.1:6380> lindex list1 0
"bao1111"
127.0.0.1:6380> lrange list1 0 10
1) "bao1111"
2) "honda"
3) "toyota"
4) "bmw"
5) "bao1"
6) "bao2"
7) "bao3"

lset key index value 将列表key下标为index的元素的值设置为value

127.0.0.1:6380> lset list1 0 bao1111
OK
127.0.0.1:6380> lrange list1 0 10
1) "bao1111"
2) "honda"
3) "toyota"

linsert 插入数据位于某元素之前或之后

linsert key befor|after pivot value

127.0.0.1:6380> linsert list1 before toyota test!
(integer) 9
127.0.0.1:6380>
127.0.0.1:6380> lrange list1 0 10
1) "bao1111"
2) "honda"
3) "test!"
4) "toyota"
5) "bmw"
6) "baozi0"
7) "bao1"
8) "bao2"
9) "bao3"

127.0.0.1:6380> linsert list1 after bmw baozi0
(integer) 8
127.0.0.1:6380> lrange list1 0 10
1) "bao1111"
2) "honda"
3) "toyota"
4) "bmw"
5) "baozi0"
6) "bao1"
7) "bao2"
8) "bao3"

6.SortedSet(有序集合)

redis有序集合和集合一样,也是string类型元素的集合,且不允许重复的成员。

每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序

有序集合的成员是唯一的,但分数(score)却可以重复

zadd key score member

zcard返回有序集key的基数

zcount key min max

127.0.0.1:6380>zcount salary 2000 5000   //计算2000到5000之间的数

zscore key member 返回值

zincrby key increment member       //为score值加上增量increment,负数为减法

    zincrby salary 2000 tom

zrange key start stop 返回指定区间成员

zrange salary 0 -1 withscores 显示所有

zrangebyscore 有序集成员按score值递增(从小到大)次序排列

127.0.0.1:6380>zrangebyscore salary -inf +inf whithscores

zrank key member显示排名

zrange salary 0-1 withscores

zrang salary tom

zrem key member移动一个或多个成员

zremrangebyrank zremrangebyscore移除

zrevrange key start stop [withscores] 递减返回值

posted on 2020-03-05 20:45  卡乐咪运维  阅读(112)  评论(0编辑  收藏  举报