Redis学习笔记

Redis安装
https://www.cnblogs.com/renzhicai/p/7773080.html
Redis菜鸟教程
http://www.runoob.com/redis/redis-sets.html
感觉还是菜鸟教程最全了,解释的也很好,学redis基本的命令的话,看菜鸟教程就够了。
Redis基本操作
学会这8点就够了
https://www.cnblogs.com/middleware/p/9052688.html
redis命令参考
基本上涵盖了所有的命令,还有相应的解释
https://www.cnblogs.com/yszr/p/8301155.html
这个是官方的文档
http://redisdoc.com/
String实战篇
https://www.cnblogs.com/idiotgroup/p/5455282.html
set详解
http://doc.redisfans.com/string/set.html

Redis是一种非关系的数据库,以key-value的形式存储,不会像传统关系型数据库,redis中没有表的概念,更不存在各种参照和约束关系。
redis中的数据库
redis在初始化的时候会默认创建16个数据库(编号0~15),这个可以通过配置文件redia.conf去指定。默认会选择第一个(0)作为默认的数据库。
slect #选择数据库(数据库编号0-15)
quit #退出连接
info #获得服务的信息与统计
monitor #实时监控
config get #获得服务配置
flushdb #删除当前选择的数据库中的key
flushall #删除所有数据库中的key

keys pattern #查看所有的与pattern匹配的key
例如:keys *查看所有的key

keys *
1) "user:1"
2) "hs"
3) "rh"
4) "flower"
5) "hk"
6) "key"
7) "redishash"

127.0.0.1:6379> keys *h*
1) "hs"
2) "rh"
3) "hk"
4) "redishash"

1、KEYS pattern

查找所有匹配给定的模式的键,keys * 查看所有缓存的键

2、DEL key1 key2

删除指定的缓存(一个或多个)

3、DUMP key

导出key的值,如果 key 不存在,那么返回 nil。否则,返回序列化之后的值。

“\x00\x02v3\b\x00\xf1*K%b\xcd\x8e\xa0”

127.0.0.1:6379> dump flower
"\x00\x05fairy\t\x00\xa4\xb4\xb5t#\x86d\t"
127.0.0.1:6379> dump flo
(nil)

4、EXISTS key

查询一个key是否存在

exists flower
(integer) 1
127.0.0.1:6379> exists flo
(integer) 0

5、EXPIRE key 20

设置一个key的过期秒数(秒)

6、TTL key

获取key的有效时间(秒),如果key不存在,返回 -2,建议与EXPIRE key一起来测试效果

127.0.0.1:6379> ttl flower
(integer) -1                    #没有设置key的过期时间返回-1

7、EXPIRE key 20000

设置key的有效时间(毫秒)

8、PTTL key

获取key的有效毫秒数(毫秒)

9、RENAME key newkey

将一个key重命名,如果该newkey已经存在了,那就用将被改名的key的value覆盖至与已存在老的newkey的值,看下面我的测试


作者:Java枫
来源:CSDN
原文:https://blog.csdn.net/qq_33101675/article/details/80607075

redis数据类型

Redis一共支持五种数据类:string(字符串)、hash(哈希)、list(列表)、set(集合)和zset(sorted set 有序集合)。

type key  #查看key的数据类型
127.0.0.1:6379> type "flower"
string
127.0.0.1:6379> type "word"
list

(1)string(字符串)
它是redis最基本的数据类型,一个key对应一个value,需要注意是一个键值最大存储512MB。

SET key value [EX seconds] [PX milliseconds] [NX|XX]

127.0.0.1:6379> set user:1 '{"id":1,"name":"flower","age":22}'
OK
127.0.0.1:6379> get user:1
"{\"id\":1,\"name\":\"flower\",\"age\":22}"

(2)hash(哈希)
redis hash是一个键值对的集合, 是一个string类型的field和value的映射表,适合用于存储对象

127.0.0.1:6379> hset 软件151 "wjh" "1005"
(integer) 1
127.0.0.1:6379> hset 软件151 "nqb" "1003"
(integer) 1
127.0.0.1:6379> hset 软件151  "cyl"  "1015"
(integer) 1
127.0.0.1:6379> hget 软件151 "wjh"
"1005"
127.0.0.1:6379> hget 软件151 "cyl"
"1015"

Scan 键或者元素迭代

这里有一份超级超级详细的教程,最好是从头到尾完完整整的看一遍
SCAN 命令用于迭代当前数据库中的数据库键。
SSCAN 命令用于迭代集合键中的元素。
hscan key cursor [MATCH pattern] [COUNT count]命令用于迭代哈希键中的键值对。
ZSCAN 命令用于迭代有序集合中的元素(包括元素成员和元素分值)。
scan cursor [MATCH pattern] [COUNT count]
这里的cursor为0时表示开始一次新的迭代,
SCAN 命令及其相关的 SSCAN 命令、 HSCAN 命令和 ZSCAN 命令都用于增量地迭代(incrementally iterate)一集元素(a collection of elements):

match pattern 表示迭代出和pattern相匹配的键(元素)

127.0.0.1:6379> scan 0
1) "0"
2) 1) "pa"
   2) "user:1"
   3) "\xe8\xbd\xaf\xe4\xbb\xb6151"
   4) "key"
   5) "flower"
   6) "pingan"
   7) "redishash"
   8) "word"
   9) "hk"
127.0.0.1:6379> scan 0 count  3
1) "12"
2) 1) "pa"
   2) "user:1"
   3) "\xe8\xbd\xaf\xe4\xbb\xb6151"
127.0.0.1:6379> scan 12 
1) "0"
2) 1) "key"
   2) "flower"
   3) "pingan"
   4) "redishash"
   5) "word"
   6) "hk"

第一行是服务器向用户返回的游标,为0表示迭代已经结束,如果不为0,表示迭代未结束,下次可以从上次返回的游标开始迭代。

(3)列表(list)
会按插入的顺序进行排序

127.0.0.1:6379> lpush word i love
(integer) 2
#word[i]
#word[love  i]
127.0.0.1:6379> rpush word you
(integer) 3
#word[love  i you]
127.0.0.1:6379> lrange word 0 2
1) "love"
2) "i"
3) "you"
127.0.0.1:6379> lset word 0 i
OK
127.0.0.1:6379> lset word 1 love
OK
127.0.0.1:6379> lset word 2 you
OK
127.0.0.1:6379> lrange word 0 2
1) "i"
2) "love"
3) "you"
llen word#显示列表长度

4)set(集合)
是string类型的无序集合,也不可重复
sadd key member [member…]
smembers key#查看集合中的元素
srem 移除集合中的元素,返回成功移除的元素数量
sremkey member [member…]
5)有序集合
后面的就不想写了,菜鸟教程上的挺全的 ,自己可以根据上面的去试。

Redis发布订阅

在客户端一创建一个订阅频道redisChat

127.0.0.1:6379> subscribe redisChat
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "redisChat"
3) (integer) 1
1) "message"
2) "redisChat"
3) "hello redis"
1) "message"
2) "redisChat"
3) "i am flower"

在客户端二发布消息,然后客户端一就会收到客户端二发布的消息进行显示

127.0.0.1:6379> subscribe redisChat
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "redisChat"
3) (integer) 1
1) "message"
2) "redisChat"
3) "hello redis"
1) "message"
2) "redisChat"
3) "i am flower"

Redis事务

通过multi开启一个事务
然后可以批量执行命令
会将exec之前的命令添加到队列中
exec时会按序执行队列中的任务(命令),redis的单条命令是原子性的,但是redis的事务是没有ACID的特性的。一条命令的失败不会影响到队列中其它命令的执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值