前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis使用教程

Redis使用教程

作者头像
shaonbean
发布2019-05-26 09:43:31
8.3K0
发布2019-05-26 09:43:31
举报
文章被收录于专栏:运维前线运维前线

版权声明:本文为木偶人shaon原创文章,转载请注明原文地址,非常感谢。 https://cloud.tencent.com/developer/article/1434729

Redis:基本用法1

以下示例是基本示例,您可以在官方网站上查看更多命令。 ⇒ http://redis.io/commands

代码语言:javascript
复制
[root@vdevops ~]# redis-cli -a password      #认证连接redis-server
127.0.0.1:6379> quit
[root@vdevops ~]# redis-cli                  # 连接redis-server               
127.0.0.1:6379> auth password                # 进行认证
127.0.0.1:6379> set key01 value01            # 设置key-value
OK
127.0.0.1:6379> quit
[root@vdevops ~]# redis-cli -a password get key01   # 获取设置的key值
"value01"
OK
127.0.0.1:6379> quit
[root@vdevops ~]# redis-cli -a password -n 1    #连接到redis-server指定的数据库
127.0.0.1:6379[1]> select 2
OK
127.0.0.1:6379[2]> quit

连接redis-server,查看redis-server状态和操作

代码语言:javascript
复制
[root@vdevops ~]# redis-cli -a password info | less
# Server
redis_version:3.2.5
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:66da36252afac421
redis_mode:standalone
os:Linux 3.10.0-327.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.8.5
process_id:12190
run_id:57bc3004bc35b1175442739980b2da019c4f5f0c
tcp_port:6379
uptime_in_seconds:113
uptime_in_days:0
hz:10
lru_clock:1194624
executable:/usr/local/src/redis-3.2.5/./src/redis-server    #这里目录根据安装时定义的目录不同显示不一样
config_file:/usr/local/src/redis-3.2.5/./redis.conf    #建议redis.conf,放到/etc目录下

# Clients
connected_clients:1
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0

# Memory
used_memory:822512
used_memory_human:803.23K
used_memory_rss:2412544
used_memory_rss_human:2.30M
used_memory_peak:822512
used_memory_peak_human:803.23K
total_system_memory:1033498624
total_system_memory_human:985.62M
used_memory_lua:3788
...
代码语言:javascript
复制
[root@linuxprobe ~]# redis-cli -a password  #
127.0.0.1:6379> client list   #显示redis的客户端连接
id=5 addr=127.0.0.1:41332 fd=5 name= age=5 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client
#
[root@linuxprobe ~]# ss -an | grep 6379         #查找连接到redis-server端口
tcp    LISTEN     0      511    127.0.0.1:6379                  *:*                  
tcp    ESTAB      0      0      127.0.0.1:41332              127.0.0.1:6379               
tcp    ESTAB      0      0      127.0.0.1:6379               127.0.0.1:41332 
#
127.0.0.1:6379> client kill 127.0.0.1:41332     #杀掉redis的连接
OK
127.0.0.1:6379> dbsize        #查看redis数据库存储的key数量
(integer) 2
127.0.0.1:6379> set key value   #设置key
OK
127.0.0.1:6379> save    #保存数据到硬盘
OK
127.0.0.1:6379> bgsave  # 后台执行保存数据到硬盘
Background saving started
127.0.0.1:6379> lastsave  # 获取上次保存到磁盘的UNIX时间戳
(integer) 1477590130
127.0.0.1:6379> shutdown  # 将数据保存在磁盘上并关闭Redis
not connected> quit
[root@linuxprobe ~]# ps aux | grep redis  # 查看redis server有没有被停掉
root     12259  0.0  0.0 112648   976 pts/1    R+   01:42   0:00 grep --color=auto redis
[root@linuxprobe ~]# redis-cli -a password
Could not connect to Redis at 127.0.0.1:6379: Connection refused # redis已经shutdown

操作Redis key

代码语言:javascript
复制
# 设置键的值
127.0.0.1:6379> set key01 value01 
OK
127.0.0.1:6379> set key02 value02
OK
# 获取键的值
127.0.0.1:6379> get key01 
"value01"
# 删除一个键
127.0.0.1:6379> del key01 
(integer) 1
# 确定键是否存在(1表示真)
127.0.0.1:6379> exists key01 
(integer) 0   #刚已删除
# 只有当密钥不存在时才设置密钥的值
# 整数0表示未设置值,因为键已存在
127.0.0.1:6379> setnx key01 value02 
(integer) 1    # 重新设置key01
# 设置有有效期的密钥的值(60表示值将在60秒后过期)
127.0.0.1:6379> setex key01 60 value01 
OK
#  将过期日期设置为现有密钥
127.0.0.1:6379> expire key02 30 
(integer) 1
# 将值添加到键
127.0.0.1:6379> append key01 value02 
(integer) 14
127.0.0.1:6379> set key02 1 
OK
# increment integer Key的值
127.0.0.1:6379> incr key02 
(integer) 2
# increment integer指定值的Key值
127.0.0.1:6379> incrby key02 100 
(integer) 102
# decrement integer Key的值
127.0.0.1:6379> decr key02 
(integer) 101
# decrement integer按指定值的键值
127.0.0.1:6379> decrby key02 51 
(integer) 50
# 设置某些键的值
127.0.0.1:6379> mset key01 value01 key02 value02 key03 value03 
OK
# 得到一些键的值
127.0.0.1:6379> mget key01 key02 key03 
1) "value01"
2) "value02"
3) "value03"
# 重命名现有键
127.0.0.1:6379> rename key01 key02 
OK
127.0.0.1:6379> mget key01 key02 
1) (nil)
2) "value01"
# 重命名现有的键,但如果重命名的键已经存在,命令不运行
127.0.0.1:6379> renamenx key02 key03 
(integer) 0
127.0.0.1:6379> mget key02 key03 
1) "value01"
2) "value03"
# 获取当前数据库上的密钥数
127.0.0.1:6379> dbsize 
(integer) 4
# 将键移动到另一个数据库
127.0.0.1:6379> move key03 1 
(integer) 1
127.0.0.1:6379> select 1 
OK
127.0.0.1:6379[1]> get key03 
"value03"
# 删除当前数据库上的所有键
127.0.0.1:6379> flushdb 
OK
# 删除所有数据库上的所有键
127.0.0.1:6379> flushall 
OK
127.0.0.1:6379> quit 
# 过程与从stdout读取数据
[root@linuxprobe ~]# echo 'test_words' | redis-cli -a password -x set key01 
OK
[root@linuxprobe ~]# redis-cli -a password get key01 
"test_words\n"

在Redis上使用watch命令可以使用CAS操作。如果另一个进程在多个exec之间更改了键的值,则不会将更改应用于键

代码语言:javascript
复制
[root@linuxprobe ~]# redis-cli -a password 
127.0.0.1:6379> watch key01
OK
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set key01 value02
QUEUED
127.0.0.1:6379> exec
1) OK

Redis列表的基本用法

代码语言:javascript
复制
[root@linuxprobe ~]# redis-cli -a password
# 预置值到列表(可以用空格设置多个值) 
127.0.0.1:6379> lpush list01 value01 
(integer) 1
# 将值附加到列表(可以使用空格设置多个值)
127.0.0.1:6379> rpush list01 value02 
(integer) 2
# 获取列表的长度
127.0.0.1:6379> llen list01 
(integer) 2
# 获取List的指定元素
127.0.0.1:6379> lindex list01 0 
"value01"
# 获取指定范围的元素
127.0.0.1:6379> lrange list01 0 1 
1) "value01"
2) "value02"
# 将指定的元素更改为指定的值
127.0.0.1:6379> lset list01 1 value03
OK
127.0.0.1:6379> lindex list01 1 
"value03"
# 得到头元素并删除它
127.0.0.1:6379> lpop list01 
"value01"
# 获取最后一个元素并删除它
127.0.0.1:6379> rpop list01 
"value03"
# 修剪列表的指定范围
127.0.0.1:6379> ltrim list01 1 3 
OK
127.0.0.1:6379> lrange list02 0 7 
1) "value01"
2) "test"
3) "value02"
4) "value03"
5) "value04"
6) "test"
7) "value05"
8) "test"
# 删除列表的指定数量的元素 127.0.0.1:6379> lrem list02 2 test 
(integer) 2
127.0.0.1:6379> lrange list02 0 7 
1) "value01"
2) "value02"
3) "value03"
4) "value04"
5) "value05"
6) "test"

Redis 哈希表的基本用法

代码语言:javascript
复制
[root@linuxprobe ~]# redis-cli -a password
#  设置哈希字段的值
127.0.0.1:6379> hset hash01 field01 value01 
(integer) 1
# 获取哈希字段的值
127.0.0.1:6379> hget hash01 field01 
"value01"
# 设置一些值的一些哈希字段
127.0.0.1:6379> hmset hash01 field02 value02 field03 value03 
OK
# 获取一些值的一些哈希字段
127.0.0.1:6379> hmget hash01 field01 field02 field03 
1) "value01"
2) "value02"
3) "value03"
# 获取哈希表的所有字段
127.0.0.1:6379> hkeys hash01 
1) "field01"
2) "field02"
3) "field03"
# 获取哈希表的所有字段值
127.0.0.1:6379> hvals hash01 
1) "value01"
2) "value02"
3) "value03"
# 获取哈希表的所有值和字段
127.0.0.1:6379> hgetall hash01 
1) "field01"
2) "value01"
3) "field02"
4) "value02"
5) "field03"
6) "value03"
# increment integer哈希字段的值
127.0.0.1:6379> hincrby hash01 field04 100 
(integer) 101
# 获取哈希的字段数 
127.0.0.1:6379> hexists hash01 field01 
(integer) 1
# 确定是否存在散列字段fields of a Hash
127.0.0.1:6379> hlen hash01 
(integer) 4
# 删除哈希的指定字段
127.0.0.1:6379> hdel hash01 field04 
(integer) 1

Redis集合的基本用法

代码语言:javascript
复制
[root@linuxprobe ~]# redis-cli -a password
# 添加成员到一个集合(可能有多个成员有空格)
127.0.0.1:6379> sadd set01 member01 
(integer) 1
# 获取集合的成员数
127.0.0.1:6379> scard set01 
(integer) 1
# 删除集合的指定成员
127.0.0.1:6379> srem set01 member03 
(integer) 1
# 确定指定的成员是否存在
127.0.0.1:6379> sismember set01 member01 
(integer) 1
# 获取集合的所有成员
127.0.0.1:6379> smembers set01 
1) "member03"
2) "member02"
3) "member01"
127.0.0.1:6379> smembers set02 
1) "member02"
2) "member05"
3) "member04"
127.0.0.1:6379> smembers set03 
1) "member06"
2) "member02"
3) "member01"
# 获得从所有给定集合的交集得到的集合的成员
127.0.0.1:6379> sinter set01 set02 set03 
1) "member02"
# 等于上面的SINTER,但不是显示结果,而是存储到目标Set(第一个参数)
127.0.0.1:6379> sinterstore set04 set01 set02 set03 
(integer) 1
127.0.0.1:6379> smembers set04 
1) "member02"
# 获得从第一集合和所有连续集合之间的差得到的集合的成员
127.0.0.1:6379> sdiff set01 set02 set03 
1) "member03"
# 等于上面的SDIFF,但不是显示结果,而是存储到目标Set(第一个参数)
127.0.0.1:6379> sdiffstore set05 set01 set02 set03 
(integer) 1
127.0.0.1:6379> smembers set05 
1) "member03"
# 获得从所有给定集合的并集得到的集合的成员
127.0.0.1:6379> sunion set01 set02 set03 
(integer) 1
# 等于SUNION,但不是显示结果,而是存储到目标Set(第一个参数) 
127.0.0.1:6379> sunionstore set06 set01 set02 set03 
(integer) 6
127.0.0.1:6379> smembers set06 
1) "member06"
2) "member03"
3) "member04"
4) "member02"
5) "member01"
6) "member05"
# 将成员从Set(第一个arg)移动到Set(第二个arg)
127.0.0.1:6379> smove set01 set02 member03 
(integer) 1
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年11月04日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Redis:基本用法1
  • 操作Redis key
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档