redis配置与常用方法
本文大部分来自 huizhiwang 只为了记笔记用
基本配置:
1 启动db服务器 redis-server.exe redis.windows.conf --maxmemory 200M(后面的conf可以省略)
2 启动db服务 redis-cli.exe
3 关闭db服务器 redis-cli.exe -p 6379 shutdown
常用方法
1 string
1.1 添加键值-SET 语法 SET key value [EX seconds] [PX milliseconds] [NX|XX]
注意 如果 key 已经持有其他值,SET就覆写旧值,无视类型
1.2 添加值和生存时间-SETEX 语法 SETEX key seconds value
他的生存时间为60second
1.3 获取字符串-GET 语法 GET key
1.4 追加字符串-APPEND 语法 APPEND key value
1.5 添加多个键值-MSET 语法 MSET key value [key value ...]
1.6 获取多个键值-MGET 语法 MGET key [key ...]
1.7 覆写-SETRANGE 语法 SETRANGE key offset value
注意 SETRANGE命令会确保字符串足够长以便将 value 设置在指定的偏移量上,如果给定key 原来储存的字符串长度比偏移量小(比如字符串只有 5 个字符长,但你设置的 offset 是 10 ),那么原字符和偏移量之间的空白将用零字节(zerobytes, "\x00" )来填充。
1.8 获取键值长度-STRLEN 语法 STRLEN key
2 hash
相比string等数据类型,它提供很多方便的域操作,因此在表示对象时,它是非常适合的数据类型。
2.1 添加键域值-HSET 语法 HSET key field value
如果 key 不存在,一个新的哈希表被创建并进行HSET操作。
如果域 field 已经存在于哈希表中,旧值将被覆盖。
2.2 添加多个域值-HMSET 语法 HMSET key field value [field value ...]
HMSET一次可以设置多个 field-value (域-值)对设置到哈希表 key 中
2.3 获取值-HGET 语法 HGET key field
2.4 获取多个值-HMGET 语法 HMGET key field[field...]
2.5 获取全部值-HGETALL 语法 HGETALL key
返回结果是一行域名一行值...
2.6 验证域是否存在-HEXISTS 语法 HEXISTS key filed
2.7 获取所有域-HKEYS 语法 HKEYS key
2.8 获取域数量-HLEN 语法 HLEN key
经常用在在线聊天室,显示在线用户数
2.9 删除域-HDEL 语法 HDEL key field[field...]
3 list
Redis 列表是简单的字符串列表,按照插入顺序排序。
你可以添加一个元素导列表的头部(左边)或者尾部(右边) LPUSH 命令插入一个新的元素导头部, 而RPUSH插入一个新元素导尾部.
应用 在一个社交网络中建立一个时间线模型,使用 LPUSH 去添加新的元素到用户的时间线, 使用 LRANGE 去接收一些最近插入的元素。
3.1 添加元素-LPUSH 语法 LPUSH key value[value...]
LPUSH的作用是将一个或多个值 value 插入到列表 key 的表头
3.2 设置指定位置元素-LSET 语法 LSET key index value
需要注意的是,列表 key 必须是已存在的,而且index不能超出列表长度范围。
3.3 取出元素-LPOP 语法 LPOP key
LPOP命令执行时会移除列表第一个元素
3.4 获取指定位置元素-LINDEX 语法 LINDEX key index
下标 (index)为正数时,0表示第一个元素,1表示第二个元素,以此类推。
下标 可以是负数,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
3.5 插入元素-LINSERT 语法 LINSERT key BEFORE|AFTER povit value
插入元素是一个必要功能,LINSERT可以将值 value 插入到列表 key 当中,位于值 pivot 之前或之后
3.6 移除元素-LREM 语法 LREM key count value
在redis中,移除列表元素使用LREM命令,根据参数 count 的值,移除列表中与参数 value 相等的元素
count 的值可以是以下几种:
- count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count 。
- count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值。
- count = 0 : 移除表中所有与 value 相等的值。
3.7 列表长度-LLEN 语法 LLEN key
3.8 剪切列表-LTRIM 语法 LTRIM key start stop
LTRIM可以对一个列表进行修剪,就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除
下标(index)参数start和stop都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。
你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
4 SET
Redis 集合(Set)是一个无序的字符串集合. 你可以快速的完成添加、删除、以及测试元素是否存在。
因此你可以在非常短的时间内进行合并(unions),求交集(intersections),求差集(differences of sets)
应用 使用集合追踪一件(独一无二的)事情,比如想要知道所有访问一个博客文章的独立IP
4.1 添加-SADD 语法 SADD key member[member...]
SADD命令可以将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略
4.2 随机取出-SPOP 语法 SPOP key
执行SPOP命令返回的元素将被移除该集合
4.3 获取全部元素-SMEMBERS 语法 SMEMBERS key
SMEMBERS命令只会返回集合中的全部成员,并不会移除它们
4.4 元素数量-SCARD 语法 SCARD key
4.5 差集-SDIFF 语法 SDIFF key1[key2...]
其实就是 {集合key1 - 集合key2}
4.6 交集-SINTER 语法 SINTER key1[key2...]
4.7 并集-SUNION 语法 SUNION key1[key2...]
4.8 包含判断-SISMEMBER 语法 SISMEMBER key member
4.9 移动元素-SMOVE 语法 SMOVE source destination member
将 member 元素从 source 集合移动到 destination 集合
如果 source 集合不存在或不包含指定的 member 元素,则SMOVE命令不执行任何操作,仅返回 0 。否则, member 元素从 source 集合中被移除,并添加到destination 集合中去。
当 destination 集合已经包含 member 元素时,SMOVE命令只是简单地将 source 集合中的 member 元素删除。
4.10 移除元素-SREM 语法 SREM key member[member...]
移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略。
5 ZSET
Redis 有序集合与普通集合非常相似,是一个没有重复元素的字符串集合。不同之处是有序集合的每个成员都关联了一个评分,这个评分被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的,但评分可以重复。
使用有序集合你可以以非常快的速度 添加 、 删除 和 更新 元素。因为元素是有序的, 所以你也可以很快的根据评分(score)或者次序(position)来获取一个范围的元素。
访问有序集合的中间元素也是非常快的,因此你能够使用有序集合作为一个没有重复成员的智能列表。
应用:在一个大型的在线游戏中展示一个排行榜,在那里一旦一个新的分数被提交,你可以使用ZADD命令去更新它.你也可用使用ZRANGE命令来得到顶级的用户,你还可以使用ZRANK命令根据用户名返回该用户在排行榜中的位次。同时使用ZRANK 和ZRANGE你可以显示和给定用户分数相同的所有用户。所有这些操作都非常的快速。
5.1 添加元素-ZADD 语法 ZADD key score member [[score member] [score member] ...]
如果某个 member 已经是有序集的成员,那么更新这个 member 的 score 值,并通过重新插入这个 member 元素,来保证该 member 在正确的位置上。
5.2 移除成员-ZREM 语法 ZREM key member[member...]
5.3 获取成员评分-ZSCRORE 语法 ZSCORE key member
5.4 获取指定区域成员-ZRANGE 语法 ZRANGE key start stop [WITHSCORES]
返回的成员的位置按 score 值递增(从小到大)来排序。
全部成员就是 0 到 -1
5.5 成员数量-ZCARD 语法 ZCARD key
5.6 指定评分范围的成员数量-ZCOUNT 语法 ZCOUNT key min max
执行成功,将返回有序集 key 中, score 值在 min 和 max 之间(默认包括 score 值等于 min 或 max )的成员的数量。
5.7 排名-ZRANK 语法 ZRANK key member
排名以 0 为底,也就是说, score 值最小的成员排名为 0 。
使用 ZREVRANK 命令可以获得成员按 score 值递减(从大到小)排列的排名。
5.8 增量-ZINCRBY 语法 ZINCRBY key increment member
ZINCRBY命令可以为给定的成员评分值加上增量(负数相当于减分)
当 key 不存在,或 member 不是 key 的成员时, ZINCRBY key increment member 等同于 ZADD key increment member 。
6 key
6.1 键管理-KEYS 语法 KEYS pattern
查找所有符合给定模式 pattern 的 key 。
KEYS * 匹配数据库中所有 key 。
KEYS h?llo 匹配 hello , hallo 和 hxllo 等。
KEYS h*llo 匹配 hllo 和 heeeeello 等。
KEYS h[ae]llo 匹配 hello 和 hallo ,但不匹配 hillo 。
特殊符号用 \ 隔开。
6.2 判断存在-EXISTS 语法 EXISTS key
6.3 移动-MOVE 语法 MOVE key db
MOVE命令的作用是将当前数据库的 key 移动到给定的数据库 db 当中
示例 - 将数据库0中的song,移动到数据库1。
# key 存在于当前数据库 redis> SELECT 0 # redis默认使用数据库 0,为了清晰起见,这里再显式指定一次。 OK redis> SET song "secret base - Zone" OK redis> MOVE song 1 # 将 song 移动到数据库 1 (integer) 1 redis> EXISTS song # song 已经被移走 (integer) 0 redis> SELECT 1 # 使用数据库 1 OK redis:1> EXISTS song # 证实 song 被移到了数据库 1 (注意命令提示符变成了"redis:1",表明正在使用数据库 1) (integer) 1
其中 select是选择数据库
6.4 重命名-RENAME 语法 RENAME key newkey
6.5 排序-SORT 语法SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC | DESC] [ALPHA] [STORE destination]
使用SORT命令,可以返回或保存给定列表、集合、有序集合 key 中经过排序的元素。
排序默认以数字作为对象,值被解释为双精度浮点数,然后进行比较。
6.6 序列化-DUMP 语法 DUMP key
执行DUMP命令序列化成功后,将返回被序列化的值
6.7 设置生存时间-EXPIRE 语法 EXPIRE key seconds
为给定 key 设置生存时间,当 key 过期时(生存时间为 0 ),它会被自动删除。
在 Redis 中,带有生存时间的 key 被称为『易失的』(volatile)。
生存时间可以通过使用 DEL 命令来删除整个 key 来移除,或者被 SET 和 GETSET 命令覆写(overwrite),这意味着,如果一个命令只是修改(alter)一个带生存时间的 key 的值而不是用一个新的 key 值来代替(replace)它的话,那么生存时间不会被改变。
6.8 剩余生存时间-TTL 语法 TTL key
当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。 否则,以秒为单位,返回 key 的剩余生存时间。
6.9 删除key-DEL 语法 DEL key