Redis

1.下载Redis软件包并解压
https://github.com/MicrosoftArchive/redis


2.打开配置文件redis.windows.conf和redis.windows-service.conf,修改如下的内容

maxmemory 1024000000
requirepass gis
bind 0.0.0.0
logfile "D:/GreenSoftware/Redis-x64-3.2/data/log/redis.log"
dir "D:/GreenSoftware/Redis-x64-3.2/data/db/"


3.安装Redis的Windows服务

redis-server --service-install redis.windows-service.conf --loglevel verbose

卸载服务:redis-server --service-uninstall

开启服务:redis-server --service-start

停止服务:redis-server --service-stop

 

4.启动服务

redis-server --service-start

 

5.应用客户端登录服务

redis-cli.exe -h 127.0.0.1 -p 6379 -a gis


6. keys 命令

1)设置键值
set user zyx

2)序列化
dump user

3)是否存在
exists user

4)设置过期
expire user 10000
expireat user 1293840000

5)查看过期
pttl user
ttl user

6)去掉过期
pttl user

7)删除键值
del user

8)查找key
keys us*
keys *

9)重命名Key
rename user usernamne

10)返回key所对应的值类型
type user

 11)清空所有数据

flushdb


7.字符串命令

1)设置指定 key 的值
set user zyx


2)获取指定 key 的值
get user


3)获取子字符串
getrange user 1 2

4)给定新值,旧值返回
getset user zhangyx

5)获取所有(一个或多个)给定 key 的值
set user zyx
set pass gis
mget user pass

6)设置key的过期时间与值
setex user 3000 zyx

7)key 不存在时设置 key 的值
setnx user zhangyx

8)从指定的偏移处,开始覆写给定 key 所对应的值字符串值
setrange user 1 hangyx

9)返回字符串的长度
strlen user

10)设置多个key的值
mset user zyx pass gis
mget user pass

11)同时设置一个或多个 key 不存在时key 的值
msetnx user2 zyx pass2 gis
mget user2 pass2

12)将key对应的值增加1
set commnet.good 1
incr comment.good


13)将key对应的值增加指定增量值
incrby commnet.good 5

14)将key对应的值减少1
decr comment.good

15)将key对应的值减少指定减少值
decrby commnet.good 5

16)将指定value追加到改 key 原来的值(value)的末尾
append user super

 

 

8.哈希(Hash)命令
Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象

1)将哈希表 key 中的字段 field 的值设为 value
hset person.zyx name zhangyx

2)获取存储在哈希表中指定字段的值
hget person.zyx name

3)删除一个或多个哈希表字段
hset person.zyx desc smartman
hdel person.zyx desc

4)查看哈希表 key 中,指定的字段是否存在
hexists person.zyx name

5)获取在哈希表中指定 key 的所有字段和值
hgetall person.zyx

6)获取哈希表中所有字段
hkeys person.zyx

7)获取哈希表中所有值
hvals person.zyx

8)获取哈希表中字段的数量
hlen person.zyx

9)获取所有给定字段的值
hmget person.zyx name desc

10)同时将多个 field-value (域-值)对设置到哈希表 key 中
hmset person.zyx sexy man birthday 1990

11)只有在字段 field 不存在时,设置哈希表字段的值
hsetnx person.zyx height 1

12)为哈希表 key 中的指定字段的整数值加上增量 increment
hincrby person.zyx height 20

13)为哈希表 key 中的指定字段的浮点数值加上增量 increment
hincrbyfloat person.zyx height 150.0

 


9.列表(List)命令
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)

1)将一个或多个值插入到列表头部
lpush lang c
lpush lang cpp
lpush lang java javascript

2)在列表中添加一个或多个值
rpush lang csharp python
rpush lang html

3)移出并获取列表的第一个元素
lpop lang

4)移除并获取列表最后一个元素
rpop lang

5)获取列表长度
llen lang

6)将一个值插入到已存在的列表头部
lpushx lang css

7)为已存在的列表添加值
rpushx lang ruby

8)通过索引获取列表中的元素
lindex lang 2

9)在列表的元素前或者后插入元素
linsert lang before css nodejs
linsert lang after css go


10)获取列表指定范围内的元素
lrange lang 0 -1

11)移除列表中指定出现次数的元素
rpush mylist hello
rpush mylist foo
rpush mylist hello
rpush mylist hello
lrem mylist -2 hello
lrange mylist 0 -1
1) "hello"
2) "foo"

11)通过索引设置列表元素的值
lset lang 2 r

12)对不在指定区间之内的元素都将被删除
ltrim lang 2 5
lrange lang 0 -1

13)移除列表的最后一个元素,并将该元素添加到另一个列表并返回
rpoplpush lang mylist

14)移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
blpop mylist 2000

15)移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
brpop mylist 3000

16)从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
brpoplpush lang mylist 4000

 


10.集合(Set)
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

1)向集合添加一个或多个成员
sadd color red green

2)获取集合中元素的数量
scard color

3)返回集合中的所有成员
smembers color

4)判断 member 元素是否是集合 key 的成员
sismember color red

5)将 member 元素从 source 集合移动到 destination 集合
smove color color1 red

6)移除并返回集合中的一个随机元素
spop color

7)返回集合中一个或多个随机数
sadd color red green blue white black yellow
srandmember color 2

8)移除集合中一个或多个成员
srem color green white

9)返回所有给定集合的并集
sadd color red green blue white black yellow
sadd color1 blue white purple brown gray
sunion color color1

10)所有给定集合的并集存储在 destination 集合中
sunionstore colorUnion color color1

11)返回给定所有集合的差集
sdiff color color1
sdiff color1 color

12)返回给定所有集合的差集并存储在 destination 中
sdiffstore colorDiff color color1

13)返回给定所有集合的交集
sinter color color1

14)返回给定所有集合的交集并存储在 destination 中
sinterstore colorInter color color1

 


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


1)向有序集合添加一个或多个成员,或者更新已存在成员的分数
zadd database 300.0 mysql 100.0 oracle 50.0 postgres

2)获取有序集合的成员个数
zcard database

3)计算在有序集合中指定区间分数的成员数
zcount database 80.0 500.0

4)有序集合中对指定成员的分数加上增量 increment
zincrby database 10 mysql

5)通过索引区间返回有序集合成指定区间内的成员
zrange database 0 -1
zrange database 0 -1 withscores

6)通过分数返回有序集合指定区间内的成员
zrangebyscore database 80 500 withscores

7)返回有序集合中指定成员的索引
zrank database oracle

8)移除有序集合中的一个或多个成员
zrem database mysql

9)移除有序集合中给定的排名区间的所有成员
zremrangebyrank database 1 2

10)移除有序集合中给定的分数区间的所有成员
zremrangebyscore database 80 500

11)返回有序集中指定区间内的成员,通过索引,分数从高到底
zrevrange database 0 4 withscores

12)返回有序集中指定分数区间内的成员,分数从高到低排序
zrevrangebyscore database 400 10 withscores

13)返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
zrevrank database mysql

14)返回有序集中,成员的分数值
zscore database oracle

15)计算给定的一个或多个有序集的并集,并存储在新的 key 中
zinterstore databaseInter 2 database database1

16)计算给定的一个或多个有序集的交集,并将结果集存储在新的有序集合 key 中
zunionstore databaseInter 2 database database1

 

12.Redis 事务

Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证:
批量操作在发送 EXEC 命令前被放入队列缓存。
收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行
在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。
一个事务从开始到执行会经历以下三个阶段:开始事务。命令入队。执行事务。

先以 MULTI 开始一个事务, 然后将多个命令入队到事务中, 最后由 EXEC 命令触发事务, 一并执行事务中的所有命令:

 

13.Redis 发布订阅
Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。
Redis 客户端可以订阅任意数量的频道。

 

一个客户端
subsrcibe news

另一个客户端
publish news hello

 

posted @ 2018-04-26 18:49  ParamousGIS  阅读(314)  评论(0编辑  收藏  举报