数据库
首页 > 数据库> > Redis命令

Redis命令

作者:互联网

启动关闭redis服务命令:

微信交流群:Java技术沟通群⑤(点击加入)
启动:redis-server
在这里插入图片描述

开启服务:redis-server
进入:redis-cli -h localhost -p 6379
☁  ~  redis-server
☁  ~  redis-cli -h localhost -p 6379
localhost:6379>
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所存储值的类型

标签:6379,Redis,redis,value,命令,key,集合,integer
来源: https://www.cnblogs.com/henlan/p/16554167.html