redis -String类型用法

一,nosql:泛指非关系型数据库

二 ,关系型 和非关系 有什么特点         

        1,关系型

传统的RDBMS
    结构化组织
    SQL
    数据和关系都存在单独的表中 row  col 
    数据操作,数据定义语言
    严格的一致性
    基础的事务
    。。。。。

        2,非关系型

        

NoSQL
    不仅仅是数据
    没有固定的查询语言
    键值对存储,列存储,文档存储,图形数据库(社交关系)
    最终一致性,
    CAP定理 和 BASE(异地多活)
    高性能,高可用,高扩展性
    。。。。

三、Redis能干什么

Redis是一个开源的,能做数据库 、缓存、和消息中间件

Redis能干嘛?

  1. 内存存储、持久化、内存中是断电即失、所以说持久化很重要(rdb、aof)
  2. 效率高、可以用于高速缓存
  3. 发布订阅系统
  4. 地图信息分析
  5. 计时器、计数器( 浏览量)

四、redis 常用用法

[root@iZ2zefrn59xpiawd7jgzxhZ ~]# ps -ef|grep redis #链接Redis
redis     4486     1  0 09:54 ?        00:00:08 /www/server/redi/src/redis-server 127.0.0.1:6379
root     17010 16956  0 11:44 pts/0    00:00:00 grep --color=auto redis
[root@iZ2zefrn59xpiawd7jgzxhZ ~]# redis-cli -p 6379
127.0.0.1:6379> ping  #测试
PONG
127.0.0.1:6379> keys *  #查看所有的
1) "key:__rand_int__"
127.0.0.1:6379> set name liuxukun  # set key 
OK
127.0.0.1:6379> set age 1
OK
127.0.0.1:6379> keys *
1) "key:__rand_int__"
2) "age"
3) "name"
127.0.0.1:6379> EXISTS name
(integer) 1
127.0.0.1:6379> EXISTS name1
(integer) 0
127.0.0.1:6379> move name 1
(integer) 1
127.0.0.1:6379> keys *
1) "key:__rand_int__"
2) "age"
127.0.0.1:6379> set name liu
OK
127.0.0.1:6379> EXPIRE name 10 #设置过期时间·
(integer) 1
127.0.0.1:6379> ttl name 
(integer) 6
127.0.0.1:6379> ttl name 
(integer) 5
127.0.0.1:6379> 
127.0.0.1:6379> set name lxk 
OK
127.0.0.1:6379> type name  #查看类型
string
127.0.0.1:6379> 
[root@iZ2zefrn59xpiawd7jgzxhZ ~]# 

五,String(字符串)

string的使用场景:

  • 计数器
  • 统计多单位的数量 uid:99999:follow 0
  • 粉丝数
  • 对象缓存存储
127.0.0.1:6379> set key1 v1          #设置值
OK
127.0.0.1:6379> get key1			 #获得值
"v1"
127.0.0.1:6379> keys *				#获得所有值
1) "key1"
2) "key:__rand_int__"
3) "name"
127.0.0.1:6379> EXISTS key1  	#判断某一个key是否存在
(integer) 1
127.0.0.1:6379>  APPEND key "hello"  
		#追加字符串,如果当前的key不存在,就相当于setkey
(integer) 5
127.0.0.1:6379> get key1           
"v1"
127.0.0.1:6379> APPEND key1 "hello"
(integer) 7
127.0.0.1:6379> get key1
"v1hello"
127.0.0.1:6379> STRLEN key1  #获取字符串的长度
(integer) 7
127.0.0.1:6379> APPEND key1 ",lxk"
(integer) 11
127.0.0.1:6379> get key1
"v1hello,lxk"
######################################################
127.0.0.1:6379> set views 0  #初始浏览量为0
OK
127.0.0.1:6379> get views
"0"
127.0.0.1:6379> incr views  #自增一
(integer) 1
127.0.0.1:6379> incr views
(integer) 2
127.0.0.1:6379> decr views  #自减1 
(integer) 1
127.0.0.1:6379> decr views
(integer) 0
127.0.0.1:6379> incrby views 10  # 可以设置步长,指定增量
(integer) 10
127.0.0.1:6379> decr views 5
(error) ERR wrong number of arguments for 'decr' command
127.0.0.1:6379> decrby views 5
(integer) 5
######################################################
字符串范围 range
127.0.0.1:6379> keys *  #设置key1 的值
1) "key1"
2) "name"
3) "key:__rand_int__"
4) "key"
5) "views"
127.0.0.1:6379> get key1
"v1hello,lxk"
127.0.0.1:6379> GETRANGE key1 0 3  #截取字符串【0,3】
"v1he"
127.0.0.1:6379> GETRANGE key1 0 -2
"v1hello,lx"
127.0.0.1:6379> GETRANGE key1 0 -0
(error) ERR value is not an integer or out of range
127.0.0.1:6379> GETRANGE key1 0 -1 #获取全部的字符串和getkey是一样的
"v1hello,lxk"

#替换
127.0.0.1:6379> set key2 abcdefg
OK
127.0.0.1:6379> SETRANGE key2 1 xx  #替换指定位置开始的字符串
(integer) 7
127.0.0.1:6379> get key2
"axxdefg"
######################################################
setex(set with expire) #设置过期时间
setnx(set with expire)# 不存在设置
127.0.0.1:6379> setex key3 30 "hello"  #设置key3的值为hello,30秒后过期
OK
127.0.0.1:6379> ttl key3
(integer) 21
127.0.0.1:6379> get key3
"hello"
127.0.0.1:6379> setnx mykey "redis" #如果mekey不存在,创建mykey
(integer) 1
127.0.0.1:6379> keys *
1) "key1"
2) "name"
3) "key2"
4) "mykey"
5) "key:__rand_int__"
6) "key"
7) "views"
127.0.0.1:6379> setnx mykey "MonogoDB"#如果mykey存在,创建失败
(integer) 0
127.0.0.1:6379> get mykey
"redis"
######################################################
#mset
#mget
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3  #同时设置多个值
OK
127.0.0.1:6379> keys *
1) "k1"
2) "k3"
3) "k2"
127.0.0.1:6379> mget k1 k2 k3 #同时获取多个值
1) "v1"
2) "v2"
3) "v3"
127.0.0.1:6379> msetnx k1 v1 k4 v4  #msetnx是一个原子性的操作,要么一起成功,要么一起失败
(integer) 0
127.0.0.1:6379> get k4
(nil)

#对象
set user:1 {name:zhangsan,age:3}#设置一个user:1对象值为json字符来保存一个对象!

#这里的key是一个巧妙的设计:user:{id}:{filed},如此设计在Redis中是完全OK的

127.0.0.1:6379> mset user:1:name zhangsan user:1:age 2
OK
127.0.0.1:6379> mget user:1:name user:1:age
1) "zhangsan"
2) "2"

######################################################
getset#先get然后再set
127.0.0.1:6379> getset db redis  #如果不存在值,则返回nil
(nil)
127.0.0.1:6379> get db
"redis"
127.0.0.1:6379> getset db mongodb #如存在值,获取原来的值,并设置新的值(可以用于更新数据)
"redis"
127.0.0.1:6379> get db
"mongodb"

相关推荐

  1. redis -String类型

    2024-04-01 22:34:04       18 阅读
  2. redisString类型命令

    2024-04-01 22:34:04       11 阅读
  3. Redis 常用的数据类型

    2024-04-01 22:34:04       30 阅读
  4. redis特殊数据类型-Hyperloglog(基数统计)

    2024-04-01 22:34:04       20 阅读
  5. 二、Redis五种常数据类型-String

    2024-04-01 22:34:04       12 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-01 22:34:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-01 22:34:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-01 22:34:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-01 22:34:04       18 阅读

热门阅读

  1. UDP协议

    UDP协议

    2024-04-01 22:34:04      12 阅读
  2. LeetCode 每日一题 2024/3/25-2024/3/31

    2024-04-01 22:34:04       10 阅读
  3. Ubuntu+Caddy:免费服务器上部署WordPress!

    2024-04-01 22:34:04       11 阅读
  4. 数据库【QSqlTableModel】

    2024-04-01 22:34:04       10 阅读
  5. SpringMVC源码分析(九)--返回值解析器

    2024-04-01 22:34:04       15 阅读
  6. nodejs的express编写http服务器配置跨域

    2024-04-01 22:34:04       11 阅读
  7. 提取单选框的值,并通过ajax传值到后台

    2024-04-01 22:34:04       13 阅读
  8. Spring 的 Ioc配置

    2024-04-01 22:34:04       11 阅读
  9. Python:文件读写

    2024-04-01 22:34:04       13 阅读
  10. NodeJs(前端面试题整合)

    2024-04-01 22:34:04       14 阅读