redis使用

什么是Redis

redis是远程的;
redis是基于内存的;
redis是非关系型数据库.
优点:
1.支持丰富的数据类型:String,List,Set,Sorted Set,Hash等
2.支持两种数据持久化方式:Snapshotting(内存快照)和Append-Only file(日志追加)
3.支持主从复制

Redis的应用场景

  • 缓存
  • 队列--使用list结构
  • 数据存储

Redis数据类型

数据类型 存储的值 读写能力
String 可以是字符串,整数或者浮点,统称为元素 对字符串操作,对整数类型加减
List 一个序列集合且每个节点都包好了一个元素 序列两端推入或弹出元素
Set 各个不同的元素 从集合中插入或删除元素
Hash 有key-value的散列组,其中key是字符串,value是元素 按照key进行增加删除
Sort Set 带分数的score-value有序集合,其中score是浮点,value是元素 集合插入,按照分数范围查找
  • String
# key       value(string/int/float)
127.0.0.1:6379> set string1 demo
OK
127.0.0.1:6379> get string1
"demo"
127.0.0.1:6379> set string2 4
OK
127.0.0.1:6379> get string2
"4" 
127.0.0.1:6379> incr string2 #对整型进行自增操作
(integer) 5
127.0.0.1:6379> get string2
"5"
127.0.0.1:6379> decrby string2 2 #对整型进行减法操作,将string2减去2
(integer) 3
127.0.0.1:6379> get string2
"3"
  • List类型
127.0.0.1:6379> lpush list1 12 #lpush表示从左边push一个元素到list1中,l表示left
(integer) 1
127.0.0.1:6379> lpush list1 13
(interger) 2
127.0.0.1:6379> rpop list1  #rpop表示从右侧pop出一个元素,按照先入先出的原则
“12”
127.0.0.1:6379> lpush list2 12
(integer) 1
127.0.0.1:6379> lpush list2 13
(integer) 2
127.0.0.1:6379> lpush list2 13 #list类型不要求集合中的元素唯一,所以可以插入相同的元素,而set类型要求集合中元素必须唯一
(integer) 3
127.0.0.1:6379> llen list2 #llen命令列出list2中元素的个数
(integer) 3
  • Set类型
127.0.0.1:6379> sadd set1 12
(integer) 1
127.0.0.1:6379> scard set1 #用scard查看set1中的元素个数
(integer) 1
127.0.0.1:6379> sadd set1 13
(integer) 1
127.0.0.1:6379> sadd set1 13
(integer) 0
127.0.0.1:6379> scard set1
(integer) 2
127.0.0.1:6379> sismember set1 13 #sismember 命令判断13是否在set1中
(integer) 1
127.0.0.1:6379> srem set1 13  #srem命令将13从set1中删除
(integer) 1
127.0.0.1:6379> sismember set1 13 
(integer) 0
  • Hash类型
127.0.0.1:6379> hset hash1 key1 12 #hset命令设置hash1的键为key1,值为12
(integer) 1
127.0.0.1:6379>  hget hash1 key1 #hget命令获取hash1键名为key1的值
"12"
127.0.0.1:6379> hset hash1 key2 13
(integer) 1
127.0.0.1:6379> hset hash1 key3 13
(integer) 1
127.0.0.1:6379> hlen hash1 #hlen命令获取hash1的长度
(integer) 3
127.0.0.1:6379> hset hash1 key3 14 #直接修改hash1中key3的值
(integer) 0
127.0.0.1:6379>  hget hash1 key3
"14"
127.0.0.1:6379>  hmget hash1 key1 key2  #hmget 命令一次获取多个key的值
1) "12"
2) "13"
  • Sort Set类型
127.0.0.1:6379> zadd zset1 10.1 val1  #zadd命令往zset1中添加一个元素,score为10.1,value为val1
(integer) 1
127.0.0.1:6379> zadd zset1 11.2 val2
(integer) 1
127.0.0.1:6379> zadd zset1 9.1 val3
(integer) 1
127.0.0.1:6379> zcard zset1  #zcard 命令查看zset1中的元素值
(integer) 3
127.0.0.1:6379> zrange zset1 0 2 withscores #zrange 命令打印出排名
1) "val3"
2) "9.1"
3) "val1"
4) "10.1"
5) "val2"
6) "11.19999999"
127.0.0.1:6379> zrange zset1 val2 #打印出val2的排名
(integer) 2
127.0.0.1:6379> zadd zset1 12.2 val3
(integer) 0
127.0.0.1:6379> zrange zset1 0 2 withscores
1) "val1"
2) "10.1"
3) "val2"
4) "11.19999999"
5) "val3"
6) "12.19999999"
127.0.0.1:6379> zadd zset1 12.2 val2
(integer) 0
127.0.0.1:6379> zrange zset1 0 2 withscores
1) "val1"
2) "10.1"
3) "val2"
4) "12.19999999"
5) "val3"
6) "12.19999999"

常用命令

键值相关命令

// 1. keys *,代表取出所有的 key
 redis 127.0.0.1:6379> keys *
1) "myzset2"
2) "myzset3"
3) "mylist"
4) "myset2"
5) "myset3"
6) "myset4"
7) "k_zs_1"
8) "myset5"
9) "myset6"
10) "myset7"
11) "myhash"
12) "myzset"
13) "age"
14) "myset"
15) "mylist5"
16) "mylist6"
redis 127.0.0.1:6379> keys mylist*
1) "mylist"
2) "mylist5"
3) "mylist6"
4) "mylist7"
5) "mylist8"
redis 127.0.0.1:6379>
// 2.exists 确认一个 key 是否存在
redis 127.0.0.1:6379> exists HongWan
(integer) 0
redis 127.0.0.1:6379> exists age
(integer) 1
redis 127.0.0.1:6379>
// 3. del 删除一个 key
redis 127.0.0.1:6379> del age
(integer) 1
redis 127.0.0.1:6379> exists age
(integer) 0
redis 127.0.0.1:6379>
// 4. expire 设置一个 key 的过期时间(单位:秒)
redis 127.0.0.1:6379> expire addr 10
(integer) 1
redis 127.0.0.1:6379> ttl addr
(integer) 8
redis 127.0.0.1:6379> ttl addr
(integer) 1
redis 127.0.0.1:6379> ttl addr
(integer) -1
// 们设置 addr 这个 key 的过期时间是 10 秒,然后我们不断的用 ttl 来获取这个 key 的有效时长,直至为-1 说明此值已过期
// 5. move将当前数据库中的 key 转移到其它数据库中
redis 127.0.0.1:6379> select 0
www.ChinaDBA.net 中国 DBA 超级论坛
49
OK
redis 127.0.0.1:6379> set age 30
OK
redis 127.0.0.1:6379> get age
"30"
redis 127.0.0.1:6379> move age 1
(integer) 1
redis 127.0.0.1:6379> get age
(nil)
redis 127.0.0.1:6379> select 1
OK
redis 127.0.0.1:6379[1]> get age
"30"
redis 127.0.0.1:6379[1]>
// 先显式的选择了数据库 0,然后在这个库中设置一个 key,接下来我们将这个key 从数据库 0 移到数据库 1,之后我们确认在数据库 0 中无此 key 了, 但在数据库 1 中存在这个key,说明我们转移成功了
// 6. persist 移除给定 key 的过期时间
redis 127.0.0.1:6379[1]> expire age 300
(integer) 1
redis 127.0.0.1:6379[1]> ttl age
(integer) 294
redis 127.0.0.1:6379[1]> persist age
(integer) 1
redis 127.0.0.1:6379[1]> ttl age
(integer) -1
redis 127.0.0.1:6379[1]>
// 手动的将未到过期时间的 key,成功设置为过期
// 7. randomkey 随机返回 key 空间的一个 key
redis 127.0.0.1:6379> randomkey
"mylist7"
redis 127.0.0.1:6379> randomkey
"mylist5"
redis 127.0.0.1:6379>
// 8. rename 重命名 key
redis 127.0.0.1:6379[1]> keys *
1) "age"
redis 127.0.0.1:6379[1]> rename age age_new
OK
redis 127.0.0.1:6379[1]> keys *
1) "age_new"
// 9.  type 返回值的类型
redis 127.0.0.1:6379> type addr
string
redis 127.0.0.1:6379> type myzset2
zset
redis 127.0.0.1:6379> type mylist
list

服务器相关命令

// 1. ping 测试连接是否存活
redis 127.0.0.1:6379> ping
PONG
// 2. echo 在命令行打印一些内容
redis 127.0.0.1:6379> echo Helloworld
"Helloworld"
// 3. select 选择数据库。Redis 数据库编号从 0~15,我们可以选择任意一个数据库来进行数据的存取。
redis 127.0.0.1:6379> select 1
OK
redis 127.0.0.1:6379[1]> select 16
(error) ERR invalid DB index
redis 127.0.0.1:6379[16]>
// 4. quit 退出连接
redis 127.0.0.1:6379> quit
[root@localhost redis-2.2.12]#
// 5.  dbsize 返回当前数据库中 key 的数目
redis 127.0.0.1:6379> dbsize
(integer) 18
redis 127.0.0.1:6379>
// 6.  info 获取服务器的信息和统计
redis 127.0.0.1:6379> info
# Server
redis_version:3.2.100
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:dd26f1f93c5130ee
redis_mode:standalone
os:Windows
arch_bits:64
multiplexing_api:WinSock_IOCP
process_id:2528
.
.
redis 127.0.0.1:6379>
// 7. config get  获取服务器配置信息, config get * 表示获取全部
redis 127.0.0.1:6379> config get dir
1) "dir"
2) "/root/4setup/redis-3.2.100"
redis 127.0.0.1:6379>
// 8. flushdb 删除当前选择数据库中的所有 key
redis 127.0.0.1:6379> dbsize
(integer) 18
redis 127.0.0.1:6379> flushdb
OK
redis 127.0.0.1:6379> dbsize
(integer) 0
// 9. flushall 删除所有数据库中的所有 key
redis 127.0.0.1:6379[1]> dbsize
(integer) 1
redis 127.0.0.1:6379[1]> select 0
OK
redis 127.0.0.1:6379> flushall
OK
redis 127.0.0.1:6379> select 1
OK
redis 127.0.0.1:6379[1]> dbsize
(integer) 0
redis 127.0.0.1:6379[1]>
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,919评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,567评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,316评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,294评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,318评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,245评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,120评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,964评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,376评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,592评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,764评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,460评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,070评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,697评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,846评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,819评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,665评论 2 354

推荐阅读更多精彩内容

  • 本文将从Redis的基本特性入手,通过讲述Redis的数据结构和主要命令对Redis的基本能力进行直观介绍。之后概...
    kelgon阅读 61,160评论 23 625
  • 转载:Redis 宝典 | 基础、高级特性与性能调优 本文由 DevOpsDays 本文由简书作者kelgon供稿...
    meng_philip123阅读 3,125评论 1 34
  • NOSQL类型简介键值对:会使用到一个哈希表,表中有一个特定的键和一个指针指向特定的数据,如redis,volde...
    MicoCube阅读 3,981评论 2 27
  • 我想减肥变成从前的样子 于是我现在拼命的甚至不要命的减肥 要的就是这种效果 我想变成从前不抽烟的样子 于是我咬牙顶...
    天狗吃月阅读 142评论 0 0
  • 是因为过了青春年少 所以才会伤感?还是因为经历多了 所以才会感慨?爆竹声是青春曾跳跃的音符,远处霓虹灯是青春...
    秘木子阅读 271评论 0 1