启动关闭redis服务命令:
启动:redis-server
开启服务:redis-server
进入:redis-cli -h localhost -p 6379
☁ ~ redis-server
☁ ~ redis-cli -h localhost -p 6379
localhost:6379>
微信交流群:Java技术沟通群⑤(点击加入)
Windows服务
D:\software\Redis-x64-3.2.100>redis-server --service-start
[23804] 15 Jan 11:01:26.783 # Redis service successfully started.
D:\software\Redis-x64-3.2.100>redis-server --service-stop
[1240] 15 Jan 11:01:52.459 # Redis service successfully stopped.
D:\software\Redis-x64-3.2.100>redis-server --service-start
[8924] 15 Jan 11:03:12.491 # Redis service successfully started.
D:\software\Redis-x64-3.2.100>redis-cli.exe -h 127.0.0.1 -p 6379
127.0.0.1:6379> set userinfo xiaoming
OK
127.0.0.1:6379> get userinfo
"xiaoming"
127.0.0.1:6379>
关闭:
方式一: 先使用ps -ef|grep redis 或者是 ps aux|grep redis来查看redis的端口,然后输入kill redis端口号来关闭redis后台.
方式二: redis目录下 ./redis-cli shutdown
卸载服务:redis-server --service-uninstall
连接redis服务命令:
本地启动:redis-cli
远程启动:redis-cli -h host -p port -a password
输入shutdown 便成未连接状态,输入exit退出
redis数据类型
redis 支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
Redis支持多种类型的数据结构,五种基本数据类型:字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询;三种特殊数据类型:bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。
String
Redis自己构建了一种名为简单动态字符串(simple dynamic string,SDS)的抽象类型。string 是 redis 最基本的类型,string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。
这是最简单Redis类型。如果你只用这种类型,Redis就像一个可以持久化的memcached服务器(注:memcache的数据仅保存在内存中,服务器重启后,数据将丢失)。
我们用redis-cli来玩一下字符串类型:
> set mykey somevalue
OK
> get mykey
"somevalue"
set key value : #设置key-value
get key :#获取key的value
exists key #key是否存在
getset key value :为key设置新value,并返回key的旧value
mget key1 key2 key3.... :获取一个或多个key的value
setnx key value :key不存在时设置key的value
setex key seconds value :将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)。
strlen key :返回key所存储的字符串的长度
mset key1 value1 key2 value2 .... :同时设置一个或多个key-value
incr key :将key中存储的数字值增加1
decr key :将key中存储的数字值减1
incrby key increment :将key所存储的值加上给定的增量值increment
append key value :如果key存储的值是一个字符串,append命令将指定的value追加到key原来bvalue的末尾。#追加字符串,若key不存,相当于set key value
Hash
hash 是一个键值(key=>value)对集合。 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
hset key field value [field value] :存放指定key的field和value值
hdel key filed1 field2 :删除一个或多个哈希表字段
hexists key field :查看哈希表key中,指定的字段是否存在
hget key field :获取存储在哈希表中指定字段的值
hincrby key field increment :为哈希表key中指定的字段的整数值加上增量increment
hlen key :获取哈希表中字段的数量
hkeys key :获取所有哈希表中的字段
hvals key :获取哈希表中所有的值
hgetall key :获取在哈希表中指定key的所有字段和值
hmget key field1 field2 :获取所有给定字段的值
hmset key field1 value1 field2 value3 ....... :同时将多个field-value(域-值)对设置到哈希表key中
List
有序、可重复。C 语言本身没有链表这个数据结构的,所以 Redis 自己设计了一个链表数据结构。
list(列表)简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
llen key :获取哈希表中所有的值获取列表长度
lpop key :#移除列表头部第一个值(左)
lpush key value1 value2... :#将一个值或多个值插入列表的头部(左)
lpushx key value :将一个值插入到已存在的列表的头部
lrange key 0 -1 获取指定范围内的元素
lrem key count value :移除列表中count个与参数value相等的元素。 count > 0 :从表头到表尾 count=0 :移除所有
lset key index value :通过索引(下标)设置列表元素的值
ltrim key 0 6 :对一个列表进行修剪 让列表只保留指定区间内的元素,不在指定区间的元素都将被删除
rpop key :#移除列表尾部第一个值(右)
rpoplpush :列表 列表 移除列表的最后一个元素,并将该元素添加到另一个列表并返回
rpush key v1 v2 ... #将一个值或多个值插入列表的尾部(右)
rpushx key value :为已存在的列表添加值
Set
set 无序,不重复。是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。内部实现是一个 value为null的Hash(key是唯一的 保证了不重复),实际就是通过计算hash的方式来快速排重的。
set 是 string 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
sadd key member1 menber2...:向集合添加一个或多个成员
scard key :获取集合的成员数
smembers key :#查看指定set中所用元素
sdlff key1 key2 :返回第一个集合和第二个集合(其他集合)之间的差异
sinter key1 key2 :#获取多个set交集 (共同好友、共同关注)
sunion key1 key2 :返回所有给定集合的并集
sismember key member :判断member元素是否是集合key的成员
smove source destination member :将member元素从source集合移动到 destination集合
spop key :移除并返回集合中的一个随机元素
srandmember key :数字 返回集合中一个或多个随机数
srem key member1 ..... :移除集合中一个或多个成员
Zset
zset(有序集合)有序集合,在set的基础上增加了一个排序的值。
是 string 类型的有序集合。zset的成员是唯一的,但分数(score)却可以重复。
zset集合和无序集合一样都是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
zadd key score1 member1 【score2 member2】 :向有序集合添加一个或多个成员,或者更新已经存在的分数
zcard key :获取有序集合的成员数
zcount key min max :计算在有序集合中指定区间分数的成员数
zrange key start stop withscores :通过索引区间返回有序集合指定区间内的成员
zrevrangebyscore key max min withscores :返回有序集合中指定分数区间内的成员,分数从高到低排序
zscore key member :返回有序集合中,成员的分数值
geospatial
地理位置 (定位、附近的人、打车距离……)
redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"
(integer) 2
redis> GEODIST Sicily Palermo Catania
"166274.15156960039"
redis> GEORADIUS Sicily 15 37 100 km
1) "Catania"
redis> GEORADIUS Sicily 15 37 200 km
1) "Palermo"
2) "Catania"
redis>
#geoadd 添加地理位置规则:两极无法直接加入,通常通过java一次性导入 有效经度:-180到180 有效纬度:-85.05112878到85.05112878
geoadd china:city 121.47 31.23 shanghai
geoadd china:city 106.50 29.53 chongqing 114.05 22.52 shenzhen 120.16 30.24 hangzhou 108.96 34.26 xian
#geopop 获取指定成员的经度和纬度GEOPOS china:city chongqing beijin
#geodist 查看成员间的的直线距离GEODIST china:city beijin shanghai km
#georadius 以给定经纬度为中心,找出某一半径内的元素(附件的人)GEORADIUS china:city 110 30 1000 kmGEORADIUS china:city 110 30 1000 km withdist withcoord count 2 (withdist 显示直线距离 withcoord 显示经纬度 count 显示几条)
#georadiusbymember 以给定成员为中心,找出某一半径内的元素georadiusbymember china:city beijing 1000 km withdist withcoord count 2 (withdist 显示直线距离 withcoord 显示经纬度 count 显示几条)
#geohash 返回一个或多个位置元素的geohash表示 将二维的经纬度转换成一维的11位字符串 如果两个字符串越接近,则距离越近。
hyperloglog
基数 (不重复的元素个数) 标准误差小于1%。
HyperLogLog是一种概率数据结构,用于计算唯一事物(从技术上讲,这是指估计集合的基数)。该算法的神奇之处在于,不再需要使用与计数的项目数成比例的内存量,而是可以使用恒定的内存量!在最坏的情况下是12k字节,如果你的HyperLogLog(我们现在只称其为HLL)看到的元素很少,则会少很多。
PFadd key element #创建一组元素
PFcount key #统计元素基数
pfmerge key3 key1 key2 #合并两组key1 key2 => key3 并集
> pfadd hll a b c d
(integer) 1
> pfcount hll
(integer) 4
bitmaps
位存储。
各种实时分析。存储与对象ID相关的节省空间但高性能的布尔信息。
统计用户信息 活跃 不活跃 登录 未登录 打卡
两个状态的 都可以使用bitmaps
bitmaps位图数据结构,都是操作二进制位来进行记录的,非0即1
setbit key offset value #设置位图
getbit key offset #获取指定位图的值
bitcount key #统计数量
-----------例如 一周打卡 0为打卡 1打卡
127.0.0.1:6379> SETBIT sign 0 1(integer) 0
127.0.0.1:6379> SETBIT sign 1 0(integer) 0
127.0.0.1:6379> SETBIT sign 2 1(integer) 0
127.0.0.1:6379> SETBIT sign 3 0(integer) 0
127.0.0.1:6379> SETBIT sign 4 0(integer) 0
127.0.0.1:6379> SETBIT sign 5 0(integer) 0
127.0.0.1:6379> SETBIT sign 6 1(integer) 0
127.0.0.1:6379> GETBIT sign 0(integer) 1
127.0.0.1:6379> BITCOUNT sign(integer) 3
> setbit key 0 1
(integer) 0
> setbit key 100 1
(integer) 0
> bitcount key
(integer) 2
keys命令:
keys * :查询所有的key
del key :key存在时删除key
exists key :检查key是否存在
expire key seconds(秒) :为key设置过期时间,以秒计算
persist key :移除key的过期时间,key将持久保持
ttl key :以秒为单位返回key的剩余过期时间
randomkey :从当前数据库中随机返回一个key
rename key newkey :修改key的名称
move key db :将当前数据库的key移动到给定的数据库db当中
type key :返回key所存储值的类型