Redis是一个高性能的key-value数据库,key是字符串类型
(1)单进程:Redis的服务器程序采用的是单进程模型来处理客户端的请求。对读写时间的响应是通过epoll函数的包装来做到的。
(2)支持持久化
(3)丰富的数据类型
键的类型是字符串
值的类型分为五种:字符串string,哈希hash,列表list,无序集合set,有序集合zset
简介
字符串(string)是Redis最基本的类型,可以存储String,Integer,Float型的数据,甚至是二进制数据,一个字符串最大容量是512M |
set命令
set 键值 》如果键不存在,就是添加 》如果键存在,就是修改 设值取值 set name zs set name lisi 设置过期时间 setex name2 3 wangwu 设置多个键值对 mset key1 value1 key2 value2 key3 value3 追加值 append key value |
get命令
获取单个值 get key1 获取多个值 mget key1 key2 |
del命令
删除某个键 del key1 删除多个键 del key1 key2 |
keys命令(查找键)
mset u1 aa u2 bb u3 cc keys * |
exists命令(判断键是否存在)
如果存在返回1,不存在返回0 exists key |
type命令(查看键对应值的类型)
type key |
expire命令(设置键过期时间)
expire key seconds 案例: set name zz expire name 5 get name------------>(等一会儿...) get name |
ttl命令(查看键有效时间)
TTL key 以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。 返回值: 当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。 否则,以秒为单位,返回 key 的剩余生存时间。 |
简介
(1)列表中的值(value)类型为字符串; (2)字符串List,底层实现上不是数组,而是链表,也就是说在头部和尾部插入一个新元素,其时间复杂度是常数级别的;其弊端是:元素定位比数组慢 |
添加
从左侧插入值: lpush key value1 value2 从右侧插入值: rpush key value1 value2 |
获取
返回列表里指定范围内的值 索引从左侧开始,第一个值的索引为0; 索引可以是负数,表示从尾部开始计数,如-1表示最后一个值; start,stop为要获取值的索引。 语法:lrange key start stop 例如: (1)获取列表所有值 lrange key 0 -1 (2)从第三个元素开始获取到最后的值 lrange key 2 -1 实战: lpush name 1 2 3 rpush name 4 5 6 lrange name 0 -1 lrange name 2 -1 |
修改
设置指定索引位置的值 (1)索引从左侧开始,第一个值的索引为0; (2)索引可以是负数,表示从尾部开始,-1代表最后一个值。 语法:lset key index value 实战: lset name 1 aa lrange name 0 -1 |
删除
删除指定值 将列表中前count次出现的值移除 count>0:从头往尾删除 count<0:从尾往头删除 count=0:删除所有值 语法:irem key count value (1)实战: rpush born2 0 1 2 3 4 5 0 1 2 1 0 1 0 2 3 4 1 0 1 1 2 (2)查询列表 lrange born2 0 -1 (3)案例2:从键列表右侧开始删除1个2 lrem born2 -1 2 (4)查询列表 lrange born2 0 -1 (5):从键列表左侧开始删除2个2 lrem born2 2 2 (6)查询列表 lrange born2 0 -1 |
简介
字符串Set,无序不可重复,是通过HashTable实现的。 |
实战
1.sadd:添加元素,格式是SADD KEY_NAME VALUE1..VALUEN |
127.0.0.1:0>sadd myset v1 |
2.smembers:获取集合中所有元素,格式是SMEMBERS key |
127.0.0.1:0>smembers myset #查询myset中的值有哪些 |
3.sismember:判断元素是否在集合中,格式是SISMEMBER KEY VALUE |
127.0.0.1:0>sismember myset v1 |
4.srem:删除元素,格式是SREM KEY MEMBER1..MEMBERN |
127.0.0.1:0>srem myset v1 127.0.0.1:0>srem myset v1 127.0.0.1:0>smembers myset |
5.scard:获取集合中元素个数,格式是SCARD KEY_NAME |
127.0.0.1:0>scard myset |
6.spop:弹出元素,格式是SPOP key [count] |
127.0.0.1:0>spop myset 127.0.0.1:0>smembers myset |
7.smove:移动元素,格式是SMOVE SOURCE DESTINATION MEMBER |
sadd myset v1 v2 v3 smembers myset smove myset myset2 v3 smembers myset smembers myset2 |
简介
按Hash方式来存放字符串 |
实战
设置值,格式是HSET KEY_NAME FIELD VALUE 案例: 127.0.0.1:0>hset myhash id 123 "1" "1" hmset:同时设置多对值,格式是HMSET KEY_NAME FIELD1 VALUE1 ...FIELDN VALUEN 案例: hmset myhash name 322 age 8 hgetall:获取该key下所有的值,格式是HGETALL KEY_NAME 案例: 127.0.0.1:0>hgetall myhash 1) "id" 2) "123" 3) "name" 4) "321" 5) "age" 6) "8" hget:获取单个key的值,格式是HGET KEY_NAME FIELD_NAME 127.0.0.1:0>hget myhash name "321" hmget:同时获取多个值,格式是HMGET KEY_NAME FIELD1...FIELDN 案例: 127.0.0.1:0>hmget myhash id name age 1) "123" 2) "321" 3) "8" hdel:删除某个项,格式是HDEL KEY_NAME FIELD1.. FIELDN 127.0.0.1:0>hdel myhash id 127.0.0.1:0>hgetall myhash 1) "name" 2) "321" 3) "age" 4) "8" |
简介
字符串Set,有序且不可重复,根据Score来排序。 |
实战
1. zadd:添加元素,格式是ZADD KEY_NAME SCORE1 VALUE1.. SCOREN VALUEN,score和项可以是多对,score可以是整数,也可以是浮点数,还可以是+inf表示正无穷大,-inf表示负无穷大 案例: zadd myzset 10 v1 zadd myzset 10 v1 20 v2 30 v3 zadd myzset 9 v1 20 v2 30 v3 |
2. zrange:获取索引区间内的元素,格式是ZRANGE key start stop [WITHSCORES] 案例: zrange myzset 0 -1 zrange myzset 0 -1 withscores |
3. zrangebyscore:获取分数区间内的元素,格式是ZRANGEBYSCORE key min max [WITHSCORES] 案例: zrangebyscore myzset 0 20 #代表大于等于0,小于等于20 zrangebyscore myzset 0 (20 #代表大于等于0,小于20 zrangebyscore myzset 0 (20 withscores #代表大于等于0,小于20,带分数 zrangebyscore myzset 20 +inf withscores #代表大于等于20,带分数 zrangebyscore myzset (20 +inf withscores #代表大于20,带分数 |
4. zrem:删除元素,格式是ZREM key member [member ...] 案例: zrem myzset v1 v2 #删除v1,v2 zrangebyscore myzset 0 +inf withscores #获取所有的大于0的值和分数 |
5. zcard:获取集合中元素个数,格式是ZCARD KEY_NAME 案例: zcard myzset |